0

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

4

2 回答 2

2

您可以使用以下事件:

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

并将其标记为已处理:

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

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

于 2012-04-17T09:15:21.083 回答
0

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

如何在 ScatterView 中禁用惯性

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

于 2012-04-16T19:00:24.160 回答