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;
}
当ScrollViewer的IsManipulationEnabled属性为True时,会导致内部的Slider控件无法通过触摸进行滑动。为了解决这个问题,可以在Slider控件被鼠标进入和鼠标抬起时,分别将ScrollViewer的IsManipulationEnabled设置为false和true,从而在需要时禁用ScrollViewer的手势操作,使Slider可用。
2651

被折叠的 条评论
为什么被折叠?



