如何在同一控件上绑定LeftClick和LeftDoubleClick

时间:2015-03-20 13:12:51

标签: c# wpf

我想将LeftClick和LeftDoubleClick绑定到一个按钮。

<Button Background="Gray" >
                        <Button.InputBindings>
                            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.CommandOpenSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
                        CommandParameter="{Binding}"/>
                            <MouseBinding MouseAction="LeftClick" Command="{Binding DataContext.CommandExpandItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
                        CommandParameter="{Binding}"/>
                    </Button.InputBindings>
                    <StackPanel  >
                        <Path Width="39" Height="39" Fill="Black" Stretch="Uniform"  Data="F1 M 0,3.05176e-005L 0,29.22L 23.94,29.22L 23.94,7.95331L 16.1561,3.05176e-005L 0,3.05176e-005 Z M 3.30002,3.30005L 14.4,3.30005L 14.4,9.06003L 20.64,9.06003L 20.64,25.92L 3.30002,25.92L 3.30002,3.30005 Z M 5.70001,13.0283L 18.24,13.0283L 18.24,14.4L 5.70001,14.4L 5.70001,13.0283 Z M 5.70001,16.74L 18.24,16.74L 18.24,18.24L 5.70001,18.24L 5.70001,16.74 Z M 5.70001,20.58L 18.24,20.58L 18.24,22.1218L 5.70001,22.1218L 5.70001,20.58 Z "/>
                        <TextBlock Text="{Binding Path=PartData.Name}" ></TextBlock>
                    </StackPanel>
                </Button>

这似乎有时会起作用,虽然它非常敏感,而LeftClick鼠标操作捕获大部分点击,即使我显然是双击。有什么建议或解决方案吗?

2 个答案:

答案 0 :(得分:0)

我很困惑......双击时你不想让你的左键点击吗?因为那不可能发生。左键单击事件将触发您左键单击的瞬间,即使您的下一个输入使其双击。

您可以根据输入之间的时间手动检查双击,但只要您的双击阈值为,您的左键单击就会延迟,因此假设您允许左键单击之间的200毫秒算作双击,你不能触发你的左键单击事件直到201毫秒过去。

答案 1 :(得分:0)

尽管这是一个较早的帖子...

对于鼠标绑定,可以使用绑定的手势属性。

<MouseBinding Gesture="LeftClick" Command="{Binding DataContext.CommandExpandItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"/>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding DataContext.CommandExpandItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"/>