5

我在 WPF 中有这个滑块:

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

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

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

4

2 回答 2

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;
}

像这样,滑块可以与鼠标和触摸输入一起使用。

于 2013-07-08T23:40:30.863 回答
3

在我看来,您可能遇到了此处描述的问题:

http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html

简而言之:IsManipulationEnabled如果不处理触摸事件,会影响触摸是否产生鼠标事件,所以需要确保处理正确的事件。

于 2013-07-08T08:11:34.377 回答