C# 访问不在绑定列表中的Datagridviewcolumn
我想添加一个DatagridCheckBoxColumn,它不在绑定的源代码中,所以我可以通过gui选择特定的行。然后,我想在datagrid上迭代,并用每个选定的行调用一个存储过程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
<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
中使用此实体,而不是实体类。既然您将功能应用于视图状态,例如:调用存储过程,为什么不将其添加到视图模型中呢?这听起来很可怕。我将创建一个具有附加属性的本地类。谢谢你解释真正的原因!