簡體   English   中英

C# WPF DataGrid 獲取行

[英]C# WPF DataGrid get row

我有一個 C# WPF 項目,我使用 DataGrid(不是 DataGridView)

我需要使用從 DataGrid 中獲取一行

myGrid.ItemContainerGenerator.ContainerFromItem

我的問題是結果始終為空 - 即使網格中有行(項目)和列。

這是我在調試器輸出中可以看到的內容:

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)

如果我使用 FromIndex 而不是 FromItem,我也會得到 null:

DataGridRow row  = myGrid.ItemContainerGenerator.ContainerFromIndex(1)

您可以按如下方式獲取行:

var itemsSource = myGrid.ItemsSource as IEnumerable;
    
if (itemsSource != null)
{
   foreach (var item in itemsSource)
   {
       DataGridRow row = myGrid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
    
   }
}

要獲取特定行,

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM