Подтвердить что ты не робот

Почему пограничный контроль WPF не имеет события mousedoubleclick?

Почему пограничный контроль WPF не имеет события mousedoubleclick? У меня есть ItemControl с некоторыми элементами компоновки в нем для DataTemplate. Я хочу обработать событие двойного щелчка, чтобы открыть диалоговое окно сведений, но граница, мой контейнер макета, кажется, не раскрывает событие.

Любые предложения о том, как либо попасть в событие двойного щелчка, либо переработать xaml, чтобы сделать это возможным?

4b9b3361

Ответ 1

Просто используйте InputBindings.

<Border>
    <Border.InputBindings>
        <MouseBinding MouseAction="LeftDoubleClick" Command="..."/>
    </Border.InputBindings>
</Border>

В общем; избегать использования событий, если не разрабатывать элементы управления в WPF. Обычно использование событий, основанных на коде, является сильным признаком разрыва шаблона MVVM.

Ответ 2

MouseDoubleClick объявляется в Control, поэтому вам просто нужен экземпляр какого-либо элемента управления в ItemTemplate. Самое простое - использовать базовый класс Control, который не имеет никакого другого поведения, и просто придать ему настраиваемый шаблон с тем, что теперь находится в вашем ItemTemplate.

<ItemsControl>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Control MouseDoubleClick="Control_MouseDoubleClick">
                <Control.Template>
                    <ControlTemplate>
                        <Border>
                            <!--Other ItemTemplate stuff-->
                        </Border>
                    </ControlTemplate>
                </Control.Template>
            </Control>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Ответ 3

Обновление: Извините, мой плохой - поздний час

Внутри вашей кнопки мыши вы можете нажать ClickCount

 //  e.Handled = true;  optional

 if (e.ClickCount > 1)
 {
    // here comes double click and more :)
 }