我正在使用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. typeahead.js默认选择第一个建议
- 4. 在第一个选择中选择默认选项由angularjs
- 5. 选择微调器的第一项选择默认值
- 6. Xamarin.ios--选择TableView的第一行作为默认值?
- 7. radgrid控件的默认选择第一行
- 8. 如何选择第一行的实现代码如下,默认
- 9. 在UITableView中选择第一行作为默认值
- 10. 删除默认选择行的Datagrid查看
- 11. JqGrid的行默认选择
- 12. Angular-UI UI-选择停止将活动类应用于第一项的默认行为
- 13. Android - SwitchCompact禁用/停止默认行为
- 14. Chrome停止点击的默认行为()
- 15. bootstrap typehead防止默认选择
- 16. AngularJS防止默认选择指令
- 17. 防止默认的蓝色选择
- 18. 选择默认选择
- 19. 在DataGrid中选择一行
- 20. 停止默认循环
- 21. Javascript:停止onClick默认
- 22. 下拉选择的值默认为第一个选项
- 23. Angular2选择默认的第一个选项
- 24. DataGrid在开始时选择第一项
- 25. HTML选项选择第一个默认值而不是选择的值
- 26. 行添加默认选择两行
- 27. 默认选择框
- 28. 角选择默认
- 29. DropDown默认选择
- 30. 默认值选择
你尝试了'SelectedIndex'属性设置为-1前/设置'ItemSource'后? – 2010-08-19 05:59:52