C# 访问不在绑定列表中的Datagridviewcolumn

C# 访问不在绑定列表中的Datagridviewcolumn,c#,wpf,C#,Wpf,我想添加一个DatagridCheckBoxColumn,它不在绑定的源代码中,所以我可以通过gui选择特定的行。然后,我想在datagrid上迭代,并用每个选定的行调用一个存储过程 <DataGrid x:Name="G_DG_Data" Grid.Row="0" Grid.RowSpan="1" Grid.Column="0" Grid.ColumnSpan="3" AutoGenerateColumns="False" CanU

我想添加一个DatagridCheckBoxColumn,它不在绑定的源代码中,所以我可以通过gui选择特定的行。然后,我想在datagrid上迭代,并用每个选定的行调用一个存储过程

<DataGrid
    x:Name="G_DG_Data"
    Grid.Row="0"
    Grid.RowSpan="1"
    Grid.Column="0"
    Grid.ColumnSpan="3"
    AutoGenerateColumns="False"
    CanUserAddRows="False"
    CanUserDeleteRows="False"
    ClipboardCopyMode="IncludeHeader"
    ItemsSource="{Binding MyGridData}">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Mark" />
        <DataGridTextColumn Binding="{Binding Data}" Header="Data" />
    </DataGrid.Columns>
</DataGrid>

我试图迭代Datagrid.Items和Datagrid.Itemssource,但无法访问CheckBoxColumn值/CheckBoxColumn

这种方法可行吗?有更好的办法吗

编辑:

我在ViewModel中没有这个属性,因为ViewModel是EntityFramework,首先是数据库,我直接从数据库填充Datagrid,而这个属性是无用的

private ObservableCollection<SDH_CRModul_Sniffer> myGridData;
public ObservableCollection<SDH_CRModul_Sniffer> MyGridData
{
    get { return myGridData; }
    set
    {
        if (myGridData == value) return;
        myGridData = value;
        OnPropertyChanged("MyGridData");
    }
}
私有ObservableCollection myGridData;
公共可观测收集MyGridData
{
获取{return myGridData;}
设置
{
if(myGridData==值)返回;
myGridData=值;
OnPropertyChanged(“MyGridData”);
}
}

其中SDH_Crmodule_Sniffer是从实体框架创建的实体。

项目中的项目不知道UI中的任何
复选框。这就是为什么要将其绑定到项的属性:

<DataGridCheckBoxColumn Binding="{Binding YourProperty}" Header="Mark" />

如果不这样做,则在滚动行时,
复选框的状态可能会丢失或损坏,因为默认情况下启用了UI虚拟化

如果不绑定,获取
复选框的值的唯一方法是迭代UI中的可视元素,如果其中一些元素被虚拟化了,这将不起作用

我在ViewModel中没有这个属性,因为ViewModel是EntityFramework,首先是数据库,我直接从数据库填充Datagrid,而这个属性是无用的

private ObservableCollection<SDH_CRModul_Sniffer> myGridData;
public ObservableCollection<SDH_CRModul_Sniffer> MyGridData
{
    get { return myGridData; }
    set
    {
        if (myGridData == value) return;
        myGridData = value;
        OnPropertyChanged("MyGridData");
    }
}

实体框架生成分部类,这样您就可以创建另一个具有相同名称的分部类,并将属性添加到此分部类中。或者将实体包装在视图模型类中,并在
DataGrid
中使用此实体,而不是实体类。

既然您将功能应用于视图状态,例如:调用存储过程,为什么不将其添加到视图模型中呢?这听起来很可怕。我将创建一个具有附加属性的本地类。谢谢你解释真正的原因!