繁体   English   中英

如何获得 <checkbox> 内部状态 <datagridtemplatecolumn> 在datagrid中任何行的复选框事件上

[英]How to get <checkbox> state inside <datagridtemplatecolumn> on any row's checkbox event in datagrid

我的WPF应用程序中有一个数据网格-dgUserSession。 它包含3列,其中只有2个文本列与数据库绑定,第一个是手动创建的复选框。

<DataGridTemplateColumn>
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="False" Name="userSelection" Checked="DataGridCheckBox_Checked" Unchecked="DataGridCheckBox_Unchecked"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                    <DataGridTemplateColumn.HeaderTemplate>
                                        <DataTemplate>
                                            <CheckBox Checked="chkHeader_Checked" Unchecked="chkHeader_Unchecked" Name="headerSelection">
                                            </CheckBox>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.HeaderTemplate>
                                </DataGridTemplateColumn>

我想遍历所有四个事件中的每一行状态

private void chkHeader_Checked(object sender, RoutedEventArgs e)
    { 
        for (int i = 0; i < dgUserSession.Items.Count; i++)
        {
}
}

但是在此迭代过程中是否选中了如何获取复选框? 我在护目镜上呆了3个小时,但没有结果。

提前致谢。

在WPF中, 始终最好以UI所需的形式创建数据类型类。 通过这种方式,我的意思是应该将数据绑定到所有三个列,而不是将数据绑定到DataGrid中的三个列中的两个。 如果将bool属性添加到DataGrid每行中显示的类中,则可以从该类访问Checkbox的值。

如果您没有将自定义类型的集合数据绑定到DataGrid.ItemsSource ,那么我建议您这样做。 只需创建一个类(实现INotifyPropertyChanged接口)并为每个列(在您的情况下为3)具有一个属性即可。 然后,数据将该类型的ObservableCollection绑定到您的DataGrid.ItemsSource属性:

public ObservableCollection<YourDataType> Items { get; set; }

...

然后,在YourDataType类的属性设置器中,每次更改任何值时,您都可以访问每个属性/列的值:

public someType SomeProperty
{
    get { return someProperty; }
    set 
    {
        someProperty = value;
        NotifyPropertyChanged("SomeProperty");
        // each time this is changed, you have access to the other property values here
    }
}

您还可以遍历集合以查找Checkbox的值:

foreach (YourDataType item in Items)
{
    bool checkBoxValue = item.NewBoolProperty;
}

暂无
暂无

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

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