如何使用Surface SDK禁用惯性?

时间:2012-04-12 17:06:10

标签: c# wpf slider pixelsense inertia

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

2 个答案:

答案 0 :(得分:2)

您可以使用以下活动:

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

并将其标记为已处理:

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

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

答案 1 :(得分:0)