停止Datagrid默认选择第一行

vik*_*iky 19 c# wpf datagrid

我正在使用Wpf Toolkit DataGrid.每当我的ItemsSource分配给它,它的第一项得到选择及其SelectionChanged事件被调用.如何在默认情况下阻止它选择任何行?

HCL*_*HCL 38

检查您是否已设置IsSynchronizedWithCurrentItem="True"并且要求设置相同?

<DataGrid IsSynchronizedWithCurrentItem="True" ... 
Run Code Online (Sandbox Code Playgroud)

将此属性设置为true,第一项的选择是默认行为.

  • 我有相反的问题 - 我想要一种方法来*make*它默认选择第一行.这个答案仍然有效. (2认同)

Val*_*tin 11

有可能您的DataGrid绑定到具有CurrentItem属性的PagedCollectionView之类的集合.此属性在两个方向上与所选行自动同步.解决方案是将CurrentItem设置为null.你可以这样做:

PagedCollectionView pcv = new PagedCollectionView(collection);
pcv.MoveCurrentTo(null);
dataGrid.ItemsSource = pcv;
Run Code Online (Sandbox Code Playgroud)

这在Silverlight中特别有用,它没有DataGrid.IsSynchronizedWithCurrentItem属性......


小智 7

HCL 的答案是正确的,但对于像我这样快速而松散的读者来说,这被证明是令人困惑的,我最终花了更多的时间四处调查其他事情,然后才回到这里仔细阅读。

<DataGrid IsSynchronizedWithCurrentItem="False" ... 
Run Code Online (Sandbox Code Playgroud)

是我们感兴趣的部分,而不是它的对手!

添加我自己的一些值:该属性IsSynchronizedWithCurrentItem=True意味着网格CurrentItem将与集合的当前项目同步。这里的设置IsSynchronizedWithCurrentItem=False就是我们想要的。

对于 Xceed 的 Datagrid 用户(例如我在本例中),这将是SynchronizeCurrent=False