我在Windows应用商店应用中使用FlipView,它显示了一个项目列表。 FlipView应该在水平轴上翻转它的项目(这是有效的)。此外,这些项目位于ScrollViewer中,并且通常高于显示的高度,因此有一个垂直滚动条。
我希望用户能够使用向上/向下箭头键滚动,但使用向左和向右箭头键进行翻转。
现在,所有箭头键都会触发翻转。
我尝试了很多东西,使用Behaviors,注册到KeyDown事件,但是箭头Keys没有触发KeyDown事件。
我也尝试在CoreWindow.KeyDown事件中注册,但事件到达那里已经处理过,所以我无法做任何事情来防止翻转视图翻转。
有什么建议吗?
答案 0 :(得分:0)
看起来您无法使用标准密钥事件。
试一试:在你的XAML中,在FlipView之后放置一个Grid。所以你会有
<FlipView>...</FlipView>
<Grid KeyUp="grid_KeyUp" />
在这种情况下,如果您可以捕获它,请将事件设置为已处理,以便它不会冒泡到FlipView。然后,您可以通过处理相应的键,使用此事件处理程序手动导航flipview(或滚动它)。
答案 1 :(得分:0)
您可以通过将其IsTabStop属性设置为false来更改FlipViewItems行为;
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.Resources>
<Style TargetType="FlipViewItem">
<Setter Property="IsTabStop" Value="False"/>
</Style>
</Grid.Resources>
<FlipView x:Name="FlippOut">
...
这将隐式设置FlipViewItem的样式不是tabstop。这样,您的滚动查看器将获得所有制表位。然后,您可以在ScrollViewer上使用AddHandler捕获其KeyDown事件,如果它是向左或向右,则翻转flipview。
一句警告但是,在FlipViewItem上更改此属性似乎确实在某些情况下使FlipView闪烁,例如当您手动将SelectedIndex设置为某些内容时(不确定在这种情况下它是否会出现问题或不)。我刚刚发布了关于MSDN论坛中闪烁的信息,还在等待回复,看看它是否是他们的结尾或其他内容的错误:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/ffd5fe5d-de6e-4f22-82b7-e7cd82d488ad
值得一试。