如何獲取DataGrid中的行列表?不是綁定的項目,而是 DataGridRows
列表。獲取datagrid行
我需要控制這些行的可見性,它只能將其控制爲DataGridRow
而不是數據對象。
謝謝!
如何獲取DataGrid中的行列表?不是綁定的項目,而是 DataGridRows
列表。獲取datagrid行
我需要控制這些行的可見性,它只能將其控制爲DataGridRow
而不是數據對象。
謝謝!
您可以使用ItemContainerGenerator獲得該行。這應該工作 -
for (int i = 0; i < dataGrid.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator
.ContainerFromIndex(i);
}
我建議定義DataGridRow
,將有其知名度勢必是否應該或不顯示樣式。僅僅遍歷行就不夠,正如我在@ RV1987的回答中提到的那樣。
<DataGrid>
<DataGrid.Resources>
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding ...}" />
</Style>
</DataGrid.Resources>
</DataGrid>
編輯:
綁定到什麼取決於你持有的你是否應該顯示該行的信息。例如,如果您綁定的集合中的每個數據對象都有一個bool ShouldBeDisplayed
屬性,你有這樣的事情:
<DataGrid>
<DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
<Style TargetType="DataGridRow">
<Setter Property="Visibility" Value="{Binding Path=ShouldBeDisplayed, Converter={StaticResource booleanToVisibilityConverter}}" />
</Style>
</DataGrid.Resources>
</DataGrid>
什麼的綁定?這不是一個uielemnt ...你能更具體嗎? – user196625
@ user196625更新了我的答案。希望這更清楚。 –
感謝ü我會檢查它 – user196625
這裏有一點要注意的是,當虛擬化(這是默認設置),你會爲未創建的行獲取'null'。這意味着,除非在DataGrid上設置了「VirtualizingStackPanel.IsVirtualizing =」False「,否則您將無法在一次運行中迭代所有行,但這可能會導致您的網格性能較差。 –