我在 WPF 中有这个滑块:
<Slider x:Name="SizeSlider" IsManipulationEnabled="True" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged"></Slider>
我可以用鼠标拖动滑块的光标,但不能用触摸输入。
为了使用带有触摸输入的滑块,我需要做什么?
所以我找到了解决方案,感谢Agentlien提供的链接。
在 XAML 中,添加一个 TouchDown 属性:
<Slider x:Name="SizeSlider" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged" TouchDown="SizeSlider_TouchDown"/>
(我还删除了 IsManipulationEnabled 属性,因为这里没有必要)
在 C# 代码隐藏中:
private void SizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
// Things you want to do everytime slider's value change
// For example :
_brushSize = e.NewValue;
}
private void SizeSlider_TouchDown(object sender, TouchEventArgs e)
{
// Mark event as handled
e.Handled = true;
}
像这样,滑块可以与鼠标和触摸输入一起使用。
在我看来,您可能遇到了此处描述的问题:
http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html
简而言之:IsManipulationEnabled
如果不处理触摸事件,会影响触摸是否产生鼠标事件,所以需要确保处理正确的事件。