2

我在我的 Windows Store 应用程序中使用了一个 FlipView,它显示了一个项目列表。FlipView 应该在水平轴上翻转其项目(有效)。此外,这些项目位于 ScrollViewer 中,并且通常高于显示的高度,因此有一个垂直滚动条。

我希望用户能够使用向上/向下箭头键滚动,但使用左右箭头键进行翻转。

现在,所有箭头键都会触发翻转。

我尝试了很多事情,使用行为,注册到 KeyDown 事件,但箭头键没有触发 KeyDown 事件。

我也尝试在 CoreWindow.KeyDown 事件中注册,但事件到达那里已经处理,所以我不能做任何事情来阻止翻转视图翻转。

有什么建议么?

4

2 回答 2

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 的样式设置为不是制表符。这样,您的滚动查看器将获得所有制表位。然后,您可以在 ScrollViewer 上使用 AddHandler 来捕获其 KeyDown 事件,如果它是左或右,则翻转翻转视图。

不过要提醒一句,在 FlipViewItem 上更改此属性似乎确实会使 FlipView 在某些情况下闪烁,例如当您手动将 SelectedIndex 设置为某个值时(不确定在这种情况下是否会出现问题)。我刚刚在 MSDN 论坛上发布了关于闪烁的帖子,仍在等待回复,看看这是否是他们的错误或其他问题:http ://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/ ffd5fe5d-de6e-4f22-82b7-e7cd82d488ad

可能值得一试。

于 2013-02-04T23:35:23.217 回答
0

看起来您将无法使用标准键事件。

试试这个:在您的 XAML 中,在 FlipView 之后放置一个 Grid。所以你会有

<FlipView>...</FlipView>
<Grid KeyUp="grid_KeyUp" />

在这种情况下,如果您可以捕获它,请将事件设置为已处理,这样它就不会冒泡到 FlipView。然后,您可以使用此事件处理程序(或滚动它)通过处理适当的键来手动导航翻转视图。

于 2012-12-18T14:25:14.290 回答