我正在使用Surface SDK获得多点触控支持。我需要同时移动2个滑块...
我已经创建了一些SurfaceSlider,效果很好,除了控件在运动后具有一定的惯性...
是否有禁用惯性的方法?我已经在网上搜索了,但没有找到任何东西...他们不提供选项或类似的东西...
如果您需要更多信息来解决我的问题,请告诉我...
谢谢
更新:我试图使自己的滑块像这样,但是不起作用...
public class WtoSurfaceSlider : SurfaceSlider
{
#region " Ctors "
static WtoSurfaceSlider()
{
// Override metadata with style defined in themes xaml
DefaultStyleKeyProperty.OverrideMetadata(typeof(WtoSurfaceSlider), new FrameworkPropertyMetadata(typeof(WtoSurfaceSlider)));
}
public WtoSurfaceSlider()
{
Name = "New" + GetType().Name;
}
#endregion
#region " Method "
protected override void OnManipulationDelta(ManipulationDeltaEventArgs e)
{
if (e.IsInertial)
{
e.Complete();
e.Handled = true;
}
}
#endregion
}
编辑
[最后,我以Eli Arbel的评论找到了答案。我在资源xaml文件中声明我的SurfaceSlider,所以没有.cs。所以这对我来说很好:
public class WtoSurfaceThumb : SurfaceThumb
{
#region " Ctors "
static WtoSurfaceThumb()
{
// Override metadata with style defined in themes xaml
DefaultStyleKeyProperty.OverrideMetadata(typeof(WtoSurfaceThumb), new FrameworkPropertyMetadata(typeof(WtoSurfaceThumb)));
}
public WtoSurfaceThumb()
{
Name = "New" + GetType().Name;
PreviewFlicked += new FlickEventHandler(WtoSurfaceThumb_PreviewFlicked);
}
#endregion
#region " Method "
private void WtoSurfaceThumb_PreviewFlicked(object sender, FlickEventArgs e)
{
e.Handled = true;
}
#endregion
}
并且我用WtoSurfaceThumb替换了我应用程序中的所有SurfaceThumb。
您可以使用以下事件:
<s:SurfaceSlider s:SurfaceThumb.PreviewFlicked="OnPreviewFlicked" />
并将其标记为已处理:
private void OnPreviewFlicked(object sender, FlickEventArgs e)
{
e.Handled = true;
}
作为旁注-如果您不需要滑动功能,则可以使用普通滑块。 WPF 4中内置了多点触摸。