如何使用Surface SDK禁用惯性?

问题描述 投票:0回答:2

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

c# wpf slider pixelsense
2个回答
2
投票

您可以使用以下事件:

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

并将其标记为已处理:

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

作为旁注-如果您不需要滑动功能,则可以使用普通滑块。 WPF 4中内置了多点触摸。


© www.soinside.com 2019 - 2024. All rights reserved.