【发布时间】:2014-10-15 04:38:53
【问题描述】:
我有一个表示音频文件中位置的滑块。用户要求是当用户双击滑块时自动播放。
当我使用这个时:
<Slider.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding PlayCommand}" />
</Slider.InputBindings>
不调用播放命令。但是,如果我使用这个:
<Slider.InputBindings>
<MouseBinding Gesture="RightClick" Command="{Binding PlayCommand}" />
</Slider.InputBindings>
或者这个
<Slider HorizontalAlignment="Stretch" (...) MouseDoubleClick="slider1_MouseDoubleClick" >
</Slider>
播放命令被调用。
什么阻止了双击手势的使用,但允许调用右键单击手势或双击事件?
【问题讨论】:
-
看起来像是设计的。您应该复制 Slider 控件的整个模板文件,并尝试将
InputBindings替换为内部Border。在许多其他控件上也可能遇到此问题,例如ListViewItem、... -
有趣...我想知道这个设计决定是从哪里来的。这似乎是一个相当常见的 UI 习惯用法...
-
是的,事实上我对这种奇怪的行为并不感到轻松。比如在某些情况下无法捕获冒泡事件,因此我们无法处理冒泡事件,而是必须处理隧道事件(以
Preview为前缀)。在这种情况下,很奇怪MouseDoubleClick可以被捕获(我期望PreviewMouseDoubleClick)而相应的鼠标绑定LeftDoubleClick不能。
标签: wpf slider double-click