Я ненавижу некую такую старую тему, но это был лучший результат Google, и я нашел решение, которое работало лучше для меня.
После загрузки графического интерфейса я рекурсивно использую VisualTreeHelper генерировать List<DependencyObject>
всех объектов GUI во время выполнения.Мой проект требовал этот список объектов GUI по другим причинам, но он также дал мне очень простое решение для добавления Touch-поддержки для элементов управления не-Surface.
viewObjectList.ForEach(x =>
{
var temp = x as System.Windows.Controls.Primitives.ToggleButton;
if (temp != null)
{
temp.IsManipulationEnabled = true;
temp.TouchUp += TouchUpEvent;
}
});
Итерируйте по списку объектов GUI, найдитеToggleButtons (фактическая активируемая часть Expander), включите их сенсорную поддержку и привязайте к ним событие при срабатывании TouchUp (когда пользователь поднимает палец).
private void TouchUpEvent(object sender, TouchEventArgs e)
{
if (TouchesOver.Count() == 1)
{
var temp = sender as System.Windows.Controls.Primitives.ToggleButton;
temp.IsChecked = !temp.IsChecked;
}
e.Handled = false;
}