首页 > 解决方案 > 不允许对 TextBox 进行双击鼠标操作

问题描述

我正在尝试以这种方式设置文本框的双击手势:

<TextBox>
    <TextBox.InputBindings>
        <MouseBinding Gesture="MouseDoubleClick" Command="{Binding DobleClickCommand}"/>
    </TextBox.InputBindings>
</Textbox>

但是我收到不允许鼠标操作 MOUSEDOUBLECLICK 的错误。

我想将它绑定到我的视图模型中的命令。

输入绑定是这样做的吗?

标签: wpfxamlmvvminputbinding

解决方案


你的鼠标绑定错了,没有MouseDoubleClick,用LeftDoubleClick。有关有效鼠标操作的列表,请查看文档。如果您也想执行MiddleDoubleClickor的操作RightDoubleClick,您可以为它们创建单独的鼠标绑定到相同的命令。

<MouseBinding Gesture="LeftDoubleClick" Command="{Binding TestingCommand}"/>

或者,您可以使用MouseAction而不是Gesture

<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DobleClickCommand}"/>

文档建议使用Gesture而不是MouseAction

在可扩展应用程序标记语言 (XAML) 中定义 MouseBinding 时,有两种方法可以指定 MouseGesture。在 XAML 中建立 MouseBinding 的第一种方法是定义 MouseBinding 元素的 Gesture 属性,它使语法能够将鼠标操作和修饰符指定为单个字符串;例如,“CTRL+左击”。第二种方法是定义 MouseBinding 元素的 MouseAction 属性。

通常,建议您仅使用 XAML 中的 Gesture 属性,即使您未指定修饰符;这避免了歧义,提供了最精简的语法,并为序列化提供了最直接的表示。

关于a和 a的区别MouseActionGesture

MouseGesture 是带有或不带有一组 ModifierKeys 的 MouseAction。与 KeyGesture 不同,MouseGesture 不需要关联修饰键。


推荐阅读