Wpf 滑块不使用触摸输入

Wpf 滑块不使用触摸输入,wpf,xaml,slider,touch,Wpf,Xaml,Slider,Touch,我在WPF中有一个滑块: <Slider x:Name="SizeSlider" IsManipulationEnabled="True" Width="100" Minimum="1" Maximum="10" Value="1" ValueChanged="SizeSlider_ValueChanged"></Slider> 我可以用鼠标拖动滑块的光标,但不能用触摸输入 要使用带触摸输入的滑块,我需要做些什么?在我看来,您可能遇到了这里描述的问题: 简而言之:

我在WPF中有一个滑块:

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

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


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

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


简而言之:
IsManipulationEnabled
如果未处理触摸事件,则会影响触摸是否生成鼠标事件,因此您需要确保处理正确的事件。

因此,我找到了解决方案,这要感谢Agentlien提供的链接

在XAML中,添加触地属性:

<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;
}
private void SizeSlider\u值已更改(对象发送方,RoutedPropertyChangedEventArgs e)
{
//每次滑块的值更改时要执行的操作
//例如:
_笔刷大小=e.NewValue;
}
私有void SizeSlider_触地(对象发送方,TouchEventArgs e)
{
//将事件标记为已处理
e、 已处理=正确;
}

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

谢谢!通过你提供的链接,我能够解决我的问题。但这与IsManipulationEnabled属性无关。我会添加我自己的答案,但由于你的答案也很有帮助,我会尽快更新投票结果(>15次)。@MichaëlPolla你现在已经超过15岁了。@Undo:done。。。顺便说一句,这是一个有趣的昵称:-D起初我不明白为什么我能“撤销”一条评论。。。呵呵,既然这个解决方案解决了你的问题,你应该选择它作为公认的答案,这样人们就知道该去哪里找了。谢谢提醒我!我以前不能,因为我不得不再等一天:)再次感谢你的帮助!非常欢迎。:)能帮忙总是很好的。当我的谷歌搜索带来了我提供的链接和这个问题的链接时,我恰好遇到了一个类似的问题。所以,我想我最好把两者联系起来。