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

时间:2010-08-04 23:53:22

标签: wpf xaml

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

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

3 个答案:

答案 0 :(得分:47)

只需使用InputBindings。

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

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

答案 1 :(得分:16)

在Control上声明了MouseDoubleClick,因此您只需要在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>

答案 2 :(得分:6)

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

在鼠标按钮向下事件中获取ClickCount

 //  e.Handled = true;  optional

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