項目,我有以下的方法來選擇我的數據網格內的所有複選框:選擇所有WPF DataGrid的複選框只選擇鑑於
這僅適用,只要所有列在視野中。例如,如果複選框的數量超過數據網格的高度,則不會選擇這些數據網格。我將不得不向下滾動,將它們暴露在視圖中,然後重新激活我的方法以最終選擇其餘的複選框。
我錯過了什麼?這些複選框已經是數據綁定。
如果我更改數據網格的高度以公開更多複選框,這允許我選擇更多。這只是一個解決方法,我想了解爲什麼和我的代碼如何使複選框暴露給視圖很重要。
項目,我有以下的方法來選擇我的數據網格內的所有複選框:選擇所有WPF DataGrid的複選框只選擇鑑於
這僅適用,只要所有列在視野中。例如,如果複選框的數量超過數據網格的高度,則不會選擇這些數據網格。我將不得不向下滾動,將它們暴露在視圖中,然後重新激活我的方法以最終選擇其餘的複選框。
我錯過了什麼?這些複選框已經是數據綁定。
如果我更改數據網格的高度以公開更多複選框,這允許我選擇更多。這只是一個解決方法,我想了解爲什麼和我的代碼如何使複選框暴露給視圖很重要。
該解決方案可以在這裏找到:
WPF Toolkit DataGrid Checkbox Issues
的解決辦法是禁用RowVirtualization
EnableRowVirtualization="False"
如果您有大量的行,如果禁用虛擬化,則可能會出現性能問題。 – Parag
我缺少什麼?這些複選框已經是數據綁定。
如果CheckBox
ES的數據綁定,你應該設置的CheckBox
的IsChecked
屬性綁定到源屬性的值。
例如,如果你的CheckBox
的定義是這樣的:
<CheckBox IsChecked="{Binding Checked}" />
...你應該設置Checked
屬性:
foreach(var item in dGrid.Items.OfType<YourClass>())
{
item.Checked = true;
}
確保類,其中Checked
屬性定義正確實現了INotifyPropertyChanged
接口:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx。
這是一種更好的解決方案,禁用內置虛擬化,因爲後者可能會對性能造成負面影響。
在你的循環中,什麼是twn? – ShimSham
一個double也等於存在的行數。 – lavantgarde