我有一个WPF 4.0应用程序,我正在使用WPF DataGrid。我想要的是在我的视图上使用导航按钮来更改SelectedItem DataGrid,而不是让用户通过单击DataGrid来更改SelectedItem。我在我的ViewModel中使用ICollectionView作为DataGrid的ItemsSource。以下是我到目前为止的情况:
NextCommand(ViewModel):
DefaultView.MoveCurrentToNext(); // DefaultView is an ICollectionView
SelectedItem = DefaultView.CurrentItem as MyProperty;
DataGrid(查看):
<DataGrid ItemsSource="{Binding Path=DefaultView}"
SelectedItem="{Binding Path=SelectedItem}"
IsSynchronizedWithCurrentItem="True">
...
</DataGrid>
导航按钮效果很好......但是,我不想让用户点击DataGrid来更改SelectedItem。有关如何实现这一目标的任何想法?我已经玩过DataGrid_SelectionChanged事件,但问题是SelectedItem上的绑定会在此事件触发之前更新ViewModel。我希望SelectedItem不会被更改两次(一次是在用户点击时,两次是在设置回原始时)。如果需要,我可以使用守则......
答案 0 :(得分:1)
显然你必须通过自定义DataGrid模板禁用它:
http://www.wpfsharp.com/2011/05/how-to-disable-row-selection-in-a-wpf-datagrid/
出于好奇,你为什么要这样做?我的意思是你为什么要禁止用户点击它来选择一行,但允许用户通过一些导航按钮间接选择一行呢?