[英]C# WPF DataGrid get row
I have a C# WPF project and I use a DataGrid (not DataGridView)我有一个 C# WPF 项目,我使用 DataGrid(不是 DataGridView)
I need to get a row from the DataGrid using我需要使用从 DataGrid 中获取一行
myGrid.ItemContainerGenerator.ContainerFromItem
My problem is that the result is always null - even though there are rows(items) and columns in the grid.我的问题是结果始终为空 - 即使网格中有行(项目)和列。
Here is what I can see in Debugger output:这是我在调试器输出中可以看到的内容:
myGrid.Items.Count
16
myGrid.Items[0]
{Certificate.Gasbottle}
BottleNr: "******"
BottleNrVariable: "$BottlenumberCO2CH4H2S"
Gasname: "CO2/CH4/H2S"
myGrid.Items[1]
{Certificate.Gasbottle}
BottleNr: "75436"
BottleNrVariable: "$BottlenumberCO"
Gasname: " CO"
Problem:
(DataGridRow)myGrid.ItemContainerGenerator.ContainerFromItem(myGrid.Items[1]);
null <--- why null? myGrid.Items[1] does exist... (I also get this for all other items)
I also get null if I use FromIndex instead of FromItem:如果我使用 FromIndex 而不是 FromItem,我也会得到 null:
DataGridRow row = myGrid.ItemContainerGenerator.ContainerFromIndex(1)
You can get the rows as follows:您可以按如下方式获取行:
var itemsSource = myGrid.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource)
{
DataGridRow row = myGrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
}
}
To get a specific row,要获取特定行,
var itemsSource = dataGrid.ItemsSource as IList;
if (itemsSource != null && itemsSource.Count > 1)
{
var item = itemsSource[1];
DataGridRow row = dataGrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.