Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得<;复选框>;内部状态<;datagridtemplatecolumn>;在任何一行';datagrid中的复选框事件_C#_Wpf_Checkbox_Datagrid_Datatemplate - Fatal编程技术网

C# 如何获得<;复选框>;内部状态<;datagridtemplatecolumn>;在任何一行';datagrid中的复选框事件

C# 如何获得<;复选框>;内部状态<;datagridtemplatecolumn>;在任何一行';datagrid中的复选框事件,c#,wpf,checkbox,datagrid,datatemplate,C#,Wpf,Checkbox,Datagrid,Datatemplate,我的WPF应用程序中有一个datagrid-dgUserSession。 它包含3列,其中只有2个文本列与数据库绑定,第一个是手动创建的 <DataGridTemplateColumn> <DataGridTemplateColumn.CellTemplate> <DataTemplate>

我的WPF应用程序中有一个datagrid-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++)
        {
}
}
private void chkHeader\u已选中(对象发送方,路由目标e)
{ 
对于(int i=0;i
但是,在这个迭代过程中,如何获取复选框是选中还是不选中? 我戴着护目镜花了3小时,但没有结果

提前谢谢

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

如果您尚未将自定义类型的集合数据绑定到您的
DataGrid.ItemsSource
,那么我建议您这样做。只需创建一个类(实现
INotifyPropertyChanged
接口)并为每个列创建一个属性(本例中为3个)。然后,数据将该类型的
ObservableCollection
绑定到您的
DataGrid.ItemsSource
属性:

public ObservableCollection<YourDataType> Items { get; set; }
您还可以遍历集合以查找
复选框的值:

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

我想执行以下操作:var mycheckbox=dgUserSession.Columns[0].GetCellContent(…)作为每行复选框的复选框,并根据选中或未选中的结果执行操作。您尚未发布任何有关要绑定的属性的信息。这是手动创建的复选框-用于执行某些任务。如果选中了行中的复选框,则执行该任务。我不约束任何财产。这与我的页面的xaml一样。@sapatelbaps我不确定是否完全理解您的问题,为什么不使用“DataGridCheckboxColumn”并绑定其状态?@sapatelbaps您所说的我需要双击是什么意思?
foreach (YourDataType item in Items)
{
    bool checkBoxValue = item.NewBoolProperty;
}