阻止用户更改DataGrid的SelectedItem

时间:2011-06-28 16:30:50

标签: wpf mvvm datagrid

我有一个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不会被更改两次(一次是在用户点击时,两次是在设置回原始时)。如果需要,我可以使用守则......

1 个答案:

答案 0 :(得分:1)

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

http://www.wpfsharp.com/2011/05/how-to-disable-row-selection-in-a-wpf-datagrid/

出于好奇,你为什么要这样做?我的意思是你为什么要禁止用户点击它来选择一行,但允许用户通过一些导航按钮间接选择一行呢?