2017-04-03 116 views
0

項目,我有以下的方法來選擇我的數據網格內的所有複選框:選擇所有WPF DataGrid的複選框只選擇鑑於

這僅適用,只要所有列在視野中。例如,如果複選框的數量超過數據網格的高度,則不會選擇這些數據網格。我將不得不向下滾動,將它們暴露在視圖中,然後重新激活我的方法以最終選擇其餘的複選框。

我錯過了什麼?這些複選框已經是數據綁定。

如果我更改數據網格的高度以公開更多複選框,這允許我選擇更多。這只是一個解決方法,我想了解爲什麼和我的代碼如何使複選框暴露給視圖很重要。

+0

在你的循環中,什麼是twn? – ShimSham

+0

一個double也等於存在的行數。 – lavantgarde

回答

1

該解決方案可以在這裏找到:

WPF Toolkit DataGrid Checkbox Issues

的解決辦法是禁用RowVirtualization

EnableRowVirtualization="False" 
+0

如果您有大量的行,如果禁用虛擬化,則可能會出現性能問題。 – Parag

0

我缺少什麼?這些複選框已經是數據綁定。

如果CheckBox ES的數據綁定,你應該設置的CheckBoxIsChecked屬性綁定到屬性的值。

例如,如果你的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

這是一種更好的解決方案,禁用內置虛擬化,因爲後者可能會對性能造成負面影響。