WPF中在ScrollViewer控件内部的Slider控件无法触摸滑动,是由于ScrollViewer控件默认设置了IsManipulationEnabled为True。
<ScrollViewer x:Name="ScrollViewer1">
<Slider></Slider>
</ScrollViewer>
WPF ScrollViewer的IsManipulationEnabled属性是用来控制触摸手势操作的开关。当这个属性设置为true时,用户可以使用触摸手势(如滑动、缩放)来操作控件,而当设置为false时,控件将不会响应这些手势操作。
在使用触摸屏幕的设备上,IsManipulationEnabled属性可以让用户更方便地使用ScrollViewer控件,这可以提高用户体验。默认情况下,这个属性的值是true。
所以在Slider控件,或者Slider的父控件将ScrollViewer控件IsManipulationEnabled设为False即可。
<ScrollViewer x:Name="ScrollViewer1">
<Slider MouseEnter="SelectedCanvas_OnMouseEnter" MouseUp="SelectedCanvas_OnMouseUp"></Slider>
</ScrollViewer>
private void SelectedCanvas_OnMouseEnter(object sender, MouseEventArgs e)
{
ScrollViewer1.IsManipulationEnabled = false;
}
private void SelectedCanvas_OnMouseUp(object sender, MouseEventArgs e)
{
ScrollViewer1.IsManipulationEnabled = true;
}