我正在使用Wpf Toolkit DataGrid。每當我給它分配Itemssource時,它的第一個項目被選中,並且它的selectionChanged事件被調用。我怎樣才能阻止它默認選擇任何行?停止Datagrid默認選擇第一行
回答
檢查您是否設置了IsSynchronizedWithCurrentItem="True"
並且您需要將它設置爲相似?
<DataGrid IsSynchronizedWithCurrentItem="True" ...
將此屬性設置爲true時,第一項的選擇是默認行爲。
很可能您的DataGrid綁定了像PagedCollectionView這樣的具有CurrentItem屬性的集合。該屬性與所選行在兩個方向上自動同步。解決方法是將CurrentItem設置爲null。你可以這樣說:
PagedCollectionView pcv = new PagedCollectionView(collection);
pcv.MoveCurrentTo(null);
dataGrid.ItemsSource = pcv;
這是在Silverlight,它沒有DataGrid.IsSynchronizedWithCurrentItem屬性特別有用...
+1我被這個問題困擾了很長時間,這就是解決方案。 :) – 2011-10-20 20:14:25
當您需要保持CollectionViewSource和View之間的同步時,這應該是答案。 – 2017-11-04 08:36:47
我嘗試了很多不同的東西,但什麼工作對我來說是捕獲第一個選擇事件,並通過取消選擇數據網格上的所有事件來「撤消」它。
下面是使這項工作的代碼,我希望這是給別人:)有益
/* Add this inside your window constructor */
this.myDataGrid.SelectionChanged += myDataGrid_SelectionChanged;
/* Add a private boolean variable for saving the suppression flag */
private bool _myDataGrid_suppressed_flag = false;
/* Add the selection changed event handler */
void myDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
/* I check the sender type just in case */
if (sender is System.Windows.Controls.DataGrid)
{
System.Windows.Controls.DataGrid _dg = (System.Windows.Controls.DataGrid)sender;
/* If the current item is null, this is the initial selection event */
if (_dg.CurrentItem == null)
{
if (!_myDataGrid_suppressed_flag)
{
/* Set your suppressed flat */
_dgRateList_suppressed_flag = true;
/* Unselect all */
/* This will trigger another changed event where CurrentItem == null */
_dg.UnselectAll();
e.Handled = true;
return;
}
}
else
{
/* This is a legitimate selection changed due to user interaction */
}
}
}
HCL的答案是正確的,但朝三暮四讀者如我,這證明了混亂,我結束了在回到這裏並仔細閱讀之前,花更多的時間四處查看其他事情。
<DataGrid IsSynchronizedWithCurrentItem="False" ...
是我們感興趣的一點,而不是它的對手!
要添加我自己的價值: 財產IsSynchronizedWithCurrentItem=True
意味着網格的CurrentItem
將與集合的當前項目同步。設置IsSynchronizedWithCurrentItem=False
就是我們想要的。
對於Xceed的Datagrid的用戶(比如我是在這種情況下),那將是SynchronizeCurrent=False
- 1. WPF DataGrid:默認取消第一行選擇
- 2. 停止用戶選擇/取消選擇WPF DataGrid中的行
- 3. 選擇微調器的第一項選擇默認值
- 4. 在UITableView中選擇第一行作爲默認值
- 5. 如何選擇第一行的實現代碼如下,默認
- 6. Angular-UI UI-選擇停止將活動類應用於第一項的默認行爲
- 7. JqGrid的行默認選擇
- 8. 刪除默認選擇行的Datagrid查看
- 9. Android - SwitchCompact禁用/停止默認行爲
- 10. AngularJS防止默認選擇指令
- 11. bootstrap typehead防止默認選擇
- 12. 選擇默認選擇
- 13. 在DataGrid中選擇一行
- 14. 停止默認循環
- 15. HTML選擇默認
- 16. 角選擇默認
- 17. 春:選擇默認
- 18. EditText默認選擇?
- 19. 默認選擇框
- 20. 選擇器行默認爲倒數第二個
- 21. Angularjs選擇選項默認
- 22. 默認情況下從選擇框中選擇第一個值 - AngularJS
- 23. UITableView通過NSFetchedResultsControllerDelegate,默認選擇第一條記錄?
- 24. 列表視圖中第一項的默認選擇
- 25. 默認情況下選擇第一個項目
- 26. 默認情況下如何選擇第一個列表框項?
- 27. 角度材質md-select選擇默認第一個值
- 28. Sqlite選擇查詢 - 返回默認行?
- 29. 刪除默認行選擇datagridview
- 30. dataTable的默認行選擇primeNG
你嘗試了'SelectedIndex'屬性設置爲-1前/設置'ItemSource'後? – 2010-08-19 05:59:52