为什么WPF边框控件没有moused双击事件?我有一个ItemsControl,其中包含一些DataTemplate的布局内容。我想处理双击事件以弹出详细信息对话框,但边框(我的布局容器)似乎没有公开事件。
有关如何获得双击事件或重做xaml以使其成为可能的任何建议?
答案 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 :)
}