Как отключить инерцию с 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.
Добавьте обработчики в метод OnManipulationDelta ваших слайдеров...