Как отключить инерцию с Surface SDK?

Я использую 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

}

РЕДАКТИРОВАТЬ

Наконец я нашел ответ с комментарием Эли Арбеля. Я объявляю свой SurfaceSlider в файле ресурсов xaml, поэтому у меня нет.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

}

И я заменил все SurfaceThumb в моем приложении на WtoSurfaceThumb.

2 ответа

Решение

Вы можете использовать следующее событие:

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

И пометьте это как обработанное:

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

В качестве примечания - вы можете использовать обычный слайдер, если вам не нужна функциональность щелчка. Мультитач встроен в WPF 4.

Другие вопросы по тегам