Как я могу иметь события MouseUp и MouseDoubleClick в WPF Datagrid - PullRequest
0 голосов
/ 15 ноября 2010

Вот проблема.Я использую MVVM в проекте WPF и использую MVVM light.У меня есть сетка в пользовательском элементе управления, которая возвращает результаты поиска.Я хочу, чтобы пользователи могли нажимать на сетку и иметь строку, доступную для родительского представления (из меню), чтобы пользователи могли дважды щелкнуть строку и открыть в новом «окне».По отдельности у меня эти пункты работают должным образом, однако я не могу заставить обоих работать.Я пытаюсь связать одну команду с MouseUp, а другую с MouseDoubleClick, но событие MouseDoubleClick никогда не запускается.Как я могу использовать события mouseUp и MouseDoubleClick в настройке MVVM?или любые другие предложения, чтобы иметь возможность выбрать строку из таблицы данных, которая будет доступна для пунктов меню и чтобы можно было дважды щелкнуть по ней.

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

Используя MVVMLight, команда eventto предоставит вам выделенные события и дважды щелкнет события.

0 голосов
/ 03 февраля 2016

Для тех, кто любит короткие пути (также дружелюбный mvvm!), Определите интерактивность в вашем классе xaml:

xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

А в твоей сетке:

<Grid>
  <Grid.InputBindings>
     <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ElementName=xyz, Path=DataContext.MouseDoubleClick}"/>
  </Grid.InputBindings>
  <i:EventTrigger EventName="MouseUp">
     <cmd:EventToCommand Command="{Binding ElementName=xyz, Path=DataContext.MouseUpEvent}"/>
  </i:EventTrigger>
</Grid>

Надеюсь, это поможет.

0 голосов
/ 15 ноября 2010

Я думаю, вам придется вручную обнаруживать двойной щелчок.

dblClickTimeOut = null;
row.onmouseup = function() {
    if( dblClickTimeOut == null)
        dblClickTimeOut = setTimeout("dblClickTimeOut = null; selectRow('"+this.id+"');",200);
    else {
        // double-click stuff
    }
}
selectRow = function() {
    // single-click stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...