我有一个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"/>
在 C# 代码后台:
(同时我删除了 IsManipulationEnabled 属性,因为这里不需要它)
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
影响触摸事件是否会生成鼠标事件,如果触摸事件没有被处理,因此您需要确保处理正确的事件。