Wpf 防止用户更改DataGrid';s SelectedItem

Wpf 防止用户更改DataGrid';s SelectedItem,wpf,mvvm,datagrid,Wpf,Mvvm,Datagrid,我有一个WPF4.0应用程序,我正在使用WPFdataGrid。我想要的是使用视图上的导航按钮更改数据网格中的SelectedItem,而不是让用户通过单击数据网格来更改SelectedItem。我在ViewModel中使用ICollectionView作为DataGrid的ItemsSource。以下是我到目前为止的情况: 下一条命令(视图模型): 数据网格(视图): ... 导航按钮工作得很好。。。但是,我不想允许用户单击DataGrid来更改SelectedItem。关于如何实现这一点

我有一个WPF4.0应用程序,我正在使用WPFdataGrid。我想要的是使用视图上的导航按钮更改数据网格中的SelectedItem,而不是让用户通过单击数据网格来更改SelectedItem。我在ViewModel中使用ICollectionView作为DataGrid的ItemsSource。以下是我到目前为止的情况:

下一条命令(视图模型):

数据网格(视图):


...

导航按钮工作得很好。。。但是,我不想允许用户单击DataGrid来更改SelectedItem。关于如何实现这一点有什么想法吗?我已经处理了DataGrid_SelectionChanged事件,但问题是SelectedItem上的绑定在该事件触发之前更新了ViewModel。我希望SelectedItem不会被更改两次(一次是在用户单击时,两次是在设置回原始状态时)。如果需要,我可以使用代码隐藏…

显然,您必须通过自定义DataGrid模板禁用它:


出于好奇,你为什么要这么做?我的意思是,为什么您要禁止用户通过单击某行来选择该行,而允许用户通过使用某些导航按钮间接选择某行?

我将对此进行检查。我使用DataGrid来显示需要按特定顺序进行的步骤列表。步骤完成后,将标记为已完成。我不希望用户以错误的顺序完成这些步骤。
DefaultView.MoveCurrentToNext();  // DefaultView is an ICollectionView
SelectedItem = DefaultView.CurrentItem as MyProperty;
<DataGrid ItemsSource="{Binding Path=DefaultView}"
          SelectedItem="{Binding Path=SelectedItem}"
          IsSynchronizedWithCurrentItem="True">
    ...
</DataGrid>