C# 获取listview wpf中复选框的行
我对这件事是新手,我有一个问题,经过一些研究,我找不到任何有效的答案。。。 我有这个XAML代码:C# 获取listview wpf中复选框的行,c#,wpf,xaml,listview,checkbox,C#,Wpf,Xaml,Listview,Checkbox,我对这件事是新手,我有一个问题,经过一些研究,我找不到任何有效的答案。。。 我有这个XAML代码: <ListView Margin="0,0,0,0" Name="EpisodesList"> <ListView.View> <GridView> <GridViewColumn Header="Season" Width="Auto">
<ListView Margin="0,0,0,0" Name="EpisodesList">
<ListView.View>
<GridView>
<GridViewColumn Header="Season" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Season}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Episode" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Episode}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Assitido" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Watched}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Baixar" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Download}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
在XAML背后:
public SerieInfo()
{
InitializeComponent();
List<Episodes> episodes = new List<Episodes>();
for (int i = 0; i < 10; i++)
{
episodes.Add(new Episodes()
{
Season = i.ToString(),
Episode = (i + 2).ToString(),
Download = true,
Watched = true,
});
}
EpisodesList.ItemsSource = episodes;
}
public class Episodes
{
public string Season { get; set; }
public string Episode { get; set; }
public bool Download { get; set; }
public bool Watched { get; set; }
}
publicserieinfo()
{
初始化组件();
列表集=新列表();
对于(int i=0;i<10;i++)
{
剧集。添加(新剧集()
{
季节=i.ToString(),
插曲=(i+2).ToString(),
下载=真,
观看=真实,
});
}
eposodeslist.ItemsSource=剧集;
}
公共课插曲
{
公共字符串季节{get;set;}
公共字符串集{get;set;}
公共bool下载{get;set;}
公共布尔值{get;set;}
}
当任何复选框未选中或选中时,我需要获取该行的季节值,例如
+--------+---------+---------+----------+
| Season | Episode | Watched | Download |
+--------+---------+---------+----------+
| 1 | 3 | Checked |Unchecked | <-- Get the "1" value when any checkbox change
+--------+---------+---------+----------+
+--------+---------+---------+----------+
|第四季|集|观看|下载|
+--------+---------+---------+----------+
|1 | 3 |选中|未选中|您可以使用复选框的选中和未选中事件来获取季节。请参阅下面的代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Episodes> episodes = new List<Episodes>();
for (int i = 0; i < 10; i++)
{
episodes.Add(new Episodes()
{
Season = i.ToString(),
Episode = (i + 2).ToString(),
Download = true,
Watched = true,
});
}
EpisodesList.ItemsSource = episodes;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
列表集=新列表();
对于(int i=0;i<10;i++)
{
剧集。添加(新剧集()
{
季节=i.ToString(),
插曲=(i+2).ToString(),
下载=真,
观看=真实,
});
}
eposodeslist.ItemsSource=剧集;
}
已选中私有无效复选框(对象发送方、路由目标方)
{
复选框chk=发送者为复选框;
剧集epi=chk.DataContext作为剧集;
变量季节=计划季节;
}
私有无效复选框\u未选中(对象发送方,路由目标)
{
复选框chk=发送者为复选框;
剧集epi=chk.DataContext作为剧集;
变量季节=计划季节;
}
}
还有XAML
<ListView Margin="0,0,0,0" Name="EpisodesList">
<ListView.View>
<GridView>
<GridViewColumn Header="Season" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Season}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Episode" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Episode}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Assitido" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Watched}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Baixar" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Download}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
您可以使用复选框的选中和未选中事件获取季节信息。请参阅下面的代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Episodes> episodes = new List<Episodes>();
for (int i = 0; i < 10; i++)
{
episodes.Add(new Episodes()
{
Season = i.ToString(),
Episode = (i + 2).ToString(),
Download = true,
Watched = true,
});
}
EpisodesList.ItemsSource = episodes;
}
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
CheckBox chk = sender as CheckBox;
Episodes epi = chk.DataContext as Episodes;
var season = epi.Season;
}
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
列表集=新列表();
对于(int i=0;i<10;i++)
{
剧集。添加(新剧集()
{
季节=i.ToString(),
插曲=(i+2).ToString(),
下载=真,
观看=真实,
});
}
eposodeslist.ItemsSource=剧集;
}
已选中私有无效复选框(对象发送方、路由目标方)
{
复选框chk=发送者为复选框;
剧集epi=chk.DataContext作为剧集;
变量季节=计划季节;
}
私有无效复选框\u未选中(对象发送方,路由目标)
{
复选框chk=发送者为复选框;
剧集epi=chk.DataContext作为剧集;
变量季节=计划季节;
}
}
还有XAML
<ListView Margin="0,0,0,0" Name="EpisodesList">
<ListView.View>
<GridView>
<GridViewColumn Header="Season" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Season}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Episode" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Episode}"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Assitido" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Watched}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Baixar" Width="50">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<CheckBox IsChecked="{Binding Download}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>