Windows Phone 8. Панорама управления эргономической неоднозначностью
Я занимаюсь разработкой приложения для Windows Phone 8. Все довольно хорошо, но я обнаружил одну вещь, с которой я не справился заранее - и теперь поведение Panorama Control смущает меня. Вот упрощенный пример моего приложения Hub Page (с Panorama Control):
Упрощенная страница XAML выглядит следующим образом:
<phone:Panorama>
<i:Interaction.Behaviors>
<b:PanoramaBehaviour/>
</i:Interaction.Behaviors>
<phone:PanoramaItem Header="Panorama1">
<ScrollViewer>
<StackPanel>
<Button Height="72" Content="Button1" Click="Button_Click"/>
<Button Height="72" Content="Button2" Click="Button_Click"/>
<Button Height="72" Content="Button3" Click="Button_Click"/>
<Button Height="72" Content="Button4" Click="Button_Click"/>
<Button Height="72" Content="Button5" Click="Button_Click"/>
<Button Height="72" Content="Button6" Click="Button_Click"/>
<Button Height="72" Content="Button7" Click="Button_Click"/>
<Button Height="72" Content="Button8" Click="Button_Click"/>
<Button Height="72" Content="Button9" Click="Button_Click"/>
</StackPanel>
</ScrollViewer>
</phone:PanoramaItem>
<phone:PanoramaItem Header="Panorama2">
<Grid Background="Red" Tap="GridTap"/>
</phone:PanoramaItem>
</phone:Panorama>
Таким образом, проблема заключается в следующем - часто, когда я пытаюсь провести панораму от одного элемента к другому, у меня нажимается одна из кнопок первого элемента панорамы. Так что я перешел на другую страницу приложения. Может кто-нибудь сказать мне, как я могу предотвратить это поведение управления панорамой?
----------------- РЕДАКТИРОВАТЬ: решения EventToCommand не работает для меня.
2 ответа
Да, это тоже меня беспокоит, и это проблема с WP7. Решение состоит в том, чтобы использовать Tap
событие в этом случае, а не Click
событие как таковое не дает ложных активаций таким же образом. Tap
доступно на любом UIElement
, а не только кнопки.
СДЕЛАНО!) Как сказал Пол Аннеттс, событие tap вызывается другим способом, чем событие Click. Итак, для Button на Панораме решение по контролю следующее:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
<Button Content="Button1">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction IsEnabled="True" Command="{Binding TestCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>