滑块无法使用触摸输入

时间:2013-07-07 23:45:54

标签: wpf xaml slider touch

我在WPF中有这个Slider:

<Slider x:Name="SizeSlider" IsManipulationEnabled="True" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged"></Slider>

我可以用鼠标拖动滑块的光标,但不能用触摸输入拖动。

要使用带触摸输入的滑块,我需要做什么?

2 个答案:

答案 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 会影响触摸是否会在未处理触摸事件时生成鼠标事件,因此您需要确保处理正确的事件。