gpt4 book ai didi

c# - 访问不在绑定(bind)列表中的 Datagridview 列

转载 作者:行者123 更新时间:2023-11-30 15:51:35 25 4
gpt4 key购买 nike

我想添加一个不在绑定(bind)源中的 DatagridCheckBoxColumn,这样我就可以通过 gui 选择特定的行。然后我想遍历数据网格并为每个选定的行调用一个存储过程。

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

其中 SDH_CRModul_Sniffer 是从 Entity Framework 创建的实体。

最佳答案

Items 中的项目不知道 UI 中的任何 CheckBox。这就是为什么你应该将它绑定(bind)到一个项目的属性:

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

如果不这样做,由于默认启用的 UI 虚拟化,CheckBox 的状态可能会在您滚动浏览行时丢失或损坏。

如果不绑定(bind),获取 CheckBox 值的唯一方法是遍历 UI 中的可视元素,如果其中一些被虚拟化,这将不起作用.

I have this Property not in the ViewModel, because the ViewModel is EntityFramework with Database first and I fill the Datagrid directly from the Database, where the Property is useless.

Entity Framework 生成分部类,这样您就可以创建另一个同名的分部类,并将属性添加到该分部类中。或者将实体包装在 View 模型类中,并在 DataGrid 中使用它而不是实体类。

关于c# - 访问不在绑定(bind)列表中的 Datagridview 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57008830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com