WPF中的Slider控件对我正在寻找的内容无法正常工作。
我需要同时滑动2个不同的控件(滑块)(每个手指一个)。 当我触摸第一个滑块时,它会获得所有焦点,我无法用我的第二个触摸设备触摸任何其他东西。
所以我需要创建自己的Slider(MySlider)继承自Slider。 我做了4种方法:
protected override void OnTouchDown(TouchEventArgs e)
protected override void OnTouchUp(TouchEventArgs e)
protected override void OnTouchLeave(TouchEventArgs e)
protected override void OnTouchMove(TouchEventArgs e)
但有没有办法像滑鼠一样移动滑块?或者我需要在每次触摸设备移动时计算:
protected override void OnTouchMove(TouchEventArgs e)
{
base.OnTouchMove(e);
if (this.Value <= this.Maximum && this.Value >= this.Minimum)
{
Point newPoint = e.GetTouchPoint(this).Position;
this.Value += (this.lastPoint.Y - newPoint.Y);
lastPoint = newPoint;
}
e.Handled = true;
}
在这种情况下,机芯不会以与手指相同的速度移动......
答案 0 :(得分:1)
我不熟悉WPF中的多点触控事件,因此无法为您提供帮助。但是,要将鼠标移动到与触摸相同的位置,您可以查看此答案here。
您认为控件的宽度等于最大值的问题。您需要将相对于最大值和最小值之间差异的实际宽度取出因子。
这只能通过事件来完成,因为没有路由事件或用于鼠标位置的DP。
答案 1 :(得分:1)
您可能需要查看Surface 2.0 SDK,因为它包含一个名为SurfaceSlider的类,我相信这将允许同时更新两个或更多个滑块。此SDK可用于定位为Windows 7构建的应用程序。