C# 获取listview wpf中复选框的行

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">

我对这件事是新手,我有一个问题,经过一些研究,我找不到任何有效的答案。。。 我有这个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}"/>
                            </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>