繁体   English   中英

在ListView WPF中获取复选框的行

[英]Get row of a checkbox inside a listview wpf

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

    }

当未选中或选中任何复选框时,例如,我需要获取该行的季节值...

+--------+---------+---------+----------+
| Season | Episode | Watched | Download |
+--------+---------+---------+----------+
| 1      |   3     | Checked |Unchecked | <-- Get the "1" value when any checkbox change
+--------+---------+---------+----------+

您可以使用复选框的选中和未选中事件来获取季节。 请参考下面的代码。

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;
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM