Двойной щелчок WPF DataGrid с помощью команд + INotifyPropertyChanged? - PullRequest
4 голосов
/ 30 ноября 2011

Я хочу, чтобы команда в моей ViewModel выполнялась при щелчке элемента DataGrid. В качестве параметра я хочу иметь соответствующую строку.

Я нашел один подход в интернете, но он использует DependencyProperty

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/632ea875-a5b8-4d47-85b3-b30f28e0b827

Я не использую DependencyProperty в своем проекте, вместо этого я использую INotifyPropertyChanged. Как реализовать двойное нажатие в сетке данных без использования DependencyProperty?

Ответы [ 4 ]

8 голосов
/ 30 ноября 2011
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
...
<DataGrid SelectedItem={Binding MySelectedItem, Mode=TwoWay}>
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseDoubleClick">
        <i:InvokeCommandAction Command="{Binding YourCommand}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</DataGrid>
3 голосов
/ 30 ноября 2011

Я обычно использую AttachedCommandBehavior .Это 3 файла классов, которые могут быть добавлены в ваш проект и позволяют вам добавлять команды практически к любому событию.

Вот пример того, как его можно использовать:

<Style TargetType="{x:Type DataGridRow}">
    <Setter Property="local:CommandBehavior.Event" Value="MouseDoubleClick" />
    <Setter Property="local:CommandBehavior.Action" Value="{Binding MyDoubleClickCommand}" />
    <Setter Property="local:CommandBehavior.CommandParameter" Value="{Binding }" />
</Style>
2 голосов
/ 30 ноября 2011

MVVM Light Toolkit обеспечивает поведение EventToCommand, оно должно обеспечивать желаемое поведение (вы всегда можете свернуть свое собственное, если не хотите использовать фреймворк).

0 голосов
/ 30 ноября 2011

Вы можете использовать этот фрагмент кода , чтобы определить строку, по которой дважды щелкнули мышью.

В строке с комментарием "// сделать что-то с базовыми данными" вы можете получить прикрепленную ViewModel из DataContext таблицы или строки и вызвать вашу команду, указав строку в качестве параметра.

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