我在WPF中有这个Slider:
<Slider x:Name="SizeSlider" IsManipulationEnabled="True" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged"></Slider>
我可以用鼠标拖动滑块的光标,但不能用触摸输入拖动。
要使用带触摸输入的滑块,我需要做什么?
答案 0 :(得分:5)
所以我找到了解决方案,感谢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;
}
像这样,滑块可以同时使用鼠标和触摸输入。
答案 1 :(得分:3)
在我看来,你可能会遇到这里描述的问题:
http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html
简而言之: IsManipulationEnabled
会影响触摸是否会在未处理触摸事件时生成鼠标事件,因此您需要确保处理正确的事件。