Запретить пользователям изменять DataGrid SelectedItem - PullRequest
0 голосов
/ 28 июня 2011

У меня есть приложение WPF 4.0, и я использую WPF DataGrid.Я хочу использовать навигационные кнопки в моем представлении, чтобы изменить SelectedItem в DataGrid, вместо того, чтобы позволить пользователю изменять SelectedItem, щелкнув DataGrid.Я использую ICollectionView в моей ViewModel в качестве ItemsSource для моей DataGrid.Вот что у меня есть:

NextCommand (ViewModel):

DefaultView.MoveCurrentToNext();  // DefaultView is an ICollectionView
SelectedItem = DefaultView.CurrentItem as MyProperty;

DataGrid (View):

<DataGrid ItemsSource="{Binding Path=DefaultView}"
          SelectedItem="{Binding Path=SelectedItem}"
          IsSynchronizedWithCurrentItem="True">
    ...
</DataGrid>

Кнопки навигации работают отлично ...однако я не хочу позволять пользователю нажимать на DataGrid для изменения SelectedItem.Есть идеи, как этого добиться?Я поиграл с событием DataGrid_SelectionChanged, но проблема в том, что привязка к SelectedItem обновляет ViewModel еще до того, как это событие сработает.Я бы предпочел, чтобы SelectedItem не менялся дважды (один раз, когда пользователь щелкает, и дважды, когда он возвращается к оригиналу).Я в порядке с использованием кода, если это необходимо ...

1 Ответ

1 голос
/ 28 июня 2011

Видимо, вы должны отключить его через пользовательский шаблон DataGrid:

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

Из любопытства, почему ты хочешь это сделать? Я имею в виду, почему вы хотите запретить пользователю выбирать строку, щелкая по ней, но при этом разрешать пользователю выбирать строку косвенно с помощью некоторых кнопок навигации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...