为什么WPF边框控件没有moused双击事件?

Mr *_*ell 26 wpf xaml

为什么WPF边框控件没有moused双击事件?我有一个ItemsControl,其中包含一些DataTemplate的布局内容.我想处理双击事件以弹出详细信息对话框,但边框(我的布局容器)似乎没有公开事件.

有关如何获得双击事件或重做xaml以使其成为可能的任何建议?

Jas*_*ter 50

只需使用InputBindings.

<Border>
    <Border.InputBindings>
        <MouseBinding MouseAction="LeftDoubleClick" Command="..."/>
    </Border.InputBindings>
</Border>
Run Code Online (Sandbox Code Playgroud)

一般来说; 如果不在WPF中开发控件,请避免使用事件.通常,基于代码的事件的使用是MVVM模式中断的强烈指示.

  • 我很少能在stackoverflow上快速找到问题的完美答案 (3认同)
  • 优雅的解决方 比定义自己的双击行为更好. (3认同)

Joh*_*wen 16

MouseDoubleClick在Control上声明,因此您只需要在ItemTemplate中使用某个Control的实例.最简单的方法是使用没有任何其他行为的基类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>
Run Code Online (Sandbox Code Playgroud)


Luk*_*don 6

更新:对不起,我的坏时光

在鼠标按钮事件内,获取ClickCount

 //  e.Handled = true;  optional

 if (e.ClickCount > 1)
 {
    // here comes double click and more :)
 }
Run Code Online (Sandbox Code Playgroud)