我在中使用checkbox
列Silverlight 5 DataGrid。 我正面臨一個奇怪的問題。當我選擇多個checkbox
,然後向上和向下滾動網格時,選擇將轉移到其他checkbox
。Silverlight DataGrid中的複選框行爲奇怪
回答
這是自Silverlight在DataGrid中重新使用其圖形資源以來的已知行爲。有關this Silverlight thread的討論。
這似乎解決它的方法之一是數據綁定IsSelected屬性:
我當時的解決辦法是在我的數據源中添加一個新的屬性: IsSelected,並複選框以結合值。
您有更多的額外信息in this thread,其中微軟的答案:
這是不是一個錯誤。當您在 中滾動時會發生什麼情況DataGrid與用於新數據的複選框相同,因爲 DataGrid會回收視覺效果。當您的新數據具有不同的 值時,檢查將通過綁定進行更改,您將收到 事件。你可以做些什麼來實現這個場景的工作,那就是讓 加載到LoadingRow中,這是在行進入視圖時引發的。在那裏, 你可以調用column.GetCellContents來獲取單元格的內容。 這會給你CheckBox,這次你可以附加到CheckChanged 。如果你這樣做,你需要做類似的事情,並且 監聽UnloadingRow,這樣當 複選框滾動到視野外時,你可以分離事件處理器。
我在我的代碼中修復了這個問題。我沒有在網格的LoadingRow和UnloadingRow事件中處理。 只要加載一行,我們就需要查找條件,我們希望保持該複選框處於選中狀態或未選中狀態。但是,只要您設置了IsChecked屬性,複選框的Checked或UnChecked事件就會被解僱。 在這種情況下,我們可以取消註冊複選框的Checked和UnChecked事件(如果有),請設置IsChecked屬性。設置完畢後,再次註冊事件。
以下是您的幫助代碼。
將LoadingRow和UnloadingRow事件添加到您的網格。
... LoadingRow = 「DGUserList_RowLoadUnload」 UnloadingRow = 「DGUserList_RowLoadUnload」>
在隱藏文件代碼:
private void DGUserList_RowLoadUnload(object sender, DataGridRowEventArgs e)
{
DataGridRow row = e.Row;
CheckBox cbox = (CheckBox)this.dgUserList.Columns[0].GetCellContent(row);
this.UpdateHookedEventsForCheckBox(cbox, false);
cbox.IsChecked = true; // Here put your condition for check/uncheck
this.UpdateHookedEventsForCheckBox(cbox, true);
}
private void UpdateHookedEventsForCheckBox(CheckBox chkBox, bool register)
{
if (register)
{
chkBox.Checked += this.CheckBox_Checked;
chkBox.Unchecked += this.CheckBox_Unchecked;
}
else
{
chkBox.Checked -= this.CheckBox_Checked;
chkBox.Unchecked -= this.CheckBox_Unchecked;
}
}
這樣我就不必過問把一些鱈魚代碼在我經過和UnChecked事件。
- 1. 奇怪的複選框行爲
- 2. Android - 奇怪的複選框行爲
- 3. AngularJS複選框的奇怪行爲
- 4. C#複選框有奇怪的行爲
- 5. 在Flex DataGrid中作爲ItemRenderer的奇怪行爲 - 複選框--FLEX 3
- 6. ControlTemplate中的邊框導致DataGrid奇怪的選擇行爲
- 7. Silverlight DataGrid複選框事件?
- 8. android:ListView中的複選框(選中元素的奇怪行爲)
- 9. Firefox中的奇怪選擇框行爲
- 10. Datagrid裏面的Silverlight NumericUpDown奇怪的行爲
- 11. .net 4.0中WPF Datagrid的奇怪行爲
- 12. 奇怪的複選框行爲,在不同的瀏覽器中
- 13. ListView中的奇怪檢查行爲的複選框
- 14. Asp.Net MVC 3中的複選框的奇怪行爲(剃刀)
- 15. 複選框在AngularJS中的奇怪行爲ng-repeat
- 16. 角度1.2中複選框的奇怪行爲
- 17. Silverlight中的RichTextBox /列表框/ ScrollViewer中奇怪的行爲
- 18. Datagrid Silverlight中的選定行
- 19. 與複選框的變化特性奇怪的行爲
- 20. 奇怪的Silverlight的行爲最近
- 21. 片段ListView與複選框奇怪的行爲
- 22. c#添加複選框來填充奇怪的行爲
- 23. 奇怪的silverlight事件行爲
- 24. 多選奇怪的行爲
- 25. 複選框奇怪的間距標籤
- 26. 奇怪行爲KnockoutJS和jQuery Mobile複選框
- 27. datagrid中的itemrendrer複選框
- 28. Flex的複選框DataGrid中
- 29. Clojure中的奇怪布爾行爲與表單數據中的複選框
- 30. WinRT中組合框的奇怪行爲
它通過很小的修改幫助了我很多。非常感謝。 –