如何使用 Surface SDK 禁用惯性

本文关键字:SDK 何使用 Surface | 更新日期: 2023-09-27 18:30:49

我正在使用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。

如何使用 Surface SDK 禁用惯性

您可以使用以下事件:

<s:SurfaceSlider s:SurfaceThumb.PreviewFlicked="OnPreviewFlicked" />

并将其标记为已处理:

private void OnPreviewFlicked(object sender, FlickEventArgs e)
{
    e.Handled = true;
}

作为旁注 - 如果您不需要轻拂功能,您可以使用普通滑块。多点触控内置于 WPF 4 中。

将处理程序添加到滑块的 OnManipulationDelta 方法...

如何在散射视图中禁用惯性

http://msdn.microsoft.com/en-us/library/microsoft.surface.presentation.controls.surfaceslider.onmanipulationdelta.aspx