问题描述
我正在尝试通过以下方式设置文本框的双击手势:
<TextBox>
<TextBox.InputBindings>
<MouseBinding Gesture="MouseDoubleClick" Command="{Binding dobleClickCommand}"/>
</TextBox.InputBindings>
</TextBox>
但是我得到一个错误,即不允许执行鼠标动作MOUSEDOUBLECLICK。
我想将其绑定到我的视图模型中的命令。
输入绑定是做到这一点的方法吗?
解决方法
您的鼠标绑定错误,没有MouseDoubleClick
,请使用LeftDoubleClick
。有关有效的鼠标操作的列表,请查看documentation。如果您也想对MiddleDoubleClick
或RightDoubleClick
执行操作,则可以为它们创建到同一命令的单独鼠标绑定。
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding TestingCommand}"/>
或者,您可以使用MouseAction
代替Gesture
:
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DobleClickCommand}"/>
documentation建议使用Gesture
代替MouseAction
:
使用可扩展应用程序标记语言(XAML)定义MouseBinding时,有两种方法可以指定MouseGesture。在XAML中建立MouseBinding的第一种方法是定义MouseBinding元素的Gesture属性,该属性使语法可以将鼠标动作和修饰符指定为单个字符串。例如“ CTRL + LeftClick”。第二种方法是定义MouseBinding元素的MouseAction属性。
通常,即使不指定修饰符,也建议仅使用XAML中的Gesture属性。这样可以避免歧义,提供最简化的语法,并提供最直接的序列化表示形式。
在difference和Gesture
之间的MouseAction
上:
MouseGesture是带有或不带有一组ModifierKeys的MouseAction。与KeyGesture不同,MouseGesture不需要与之关联的修饰键。