uwp FlipView上下文指示器作为GridView没有收到用户交互

时间:2017-06-29 13:55:03

标签: xaml gridview uwp user-interaction flipview

我正在使用 GridView (我甚至尝试过将ListView用于此目的)作为我的FlipView的上下文指示器。 问题是当我尝试点击/点击gridViewItem以便它被选中并因此更改flipviewItem索引时,gridview不是接收任何点击或点击< / strong>用户进行交互以进行更改。但是,当我从直接flipview更改 flipviewItem 时,它会按预期工作,并且所选择的gridview项也会相应更改。

CODE

<Grid>
    <FlipView x:Name="MainFlipView" ItemsSource="{x:Bind MyItemsSource}" Visibility="Visible"
              SelectionChanged="FlipChanged">
        <FlipView.ItemTemplate>
            <DataTemplate x:DataType="data:Video">
                <userControls:FlipDataTemplate />
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>
    <GridView SelectionChanged="ContextChanged"
              Name="ContextIndicator"
              HorizontalAlignment="Right" VerticalAlignment="Bottom"
              Margin="0,0,12,12"
              ItemsSource="{x:Bind MyItemsSource}">
        <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:Video">
                <Image Width="40" Height="40" Source="{x:Bind Display}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</Grid>

C#

private void FlipChanged(object sender, SelectionChangedEventArgs e)
{
    ContextIndicator.SelectedIndex = MainFlipView.SelectedIndex;
}
private void ContextChanged(object sender, SelectionChangedEventArgs e)
{
    MainFlipView.SelectedIndex = ContextIndicator.SelectedIndex;
}

2 个答案:

答案 0 :(得分:1)

您需要在IsItemClickEnabled上将True设置为GridView

答案 1 :(得分:1)

我能够在@JustinXL的帮助下解决它,我将FlipView和GridView放在Rows中并将FlipView的RowSpan设置为 2 所以我得到了我想要的相同UI但现在它按预期工作,显然如果它们在同一行,则FlipView会干扰GridView上的UI交互。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <FlipView x:Name="MainFlipView" ItemsSource="{x:Bind MyItemsSource}" Visibility="Visible" Grid.RowSpan="2"
              SelectionChanged="FlipChanged">
        <FlipView.ItemTemplate>
            <DataTemplate x:DataType="data:Video">
                <userControls:FlipDataTemplate />
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>
    <GridView SelectionChanged="ContextChanged" Grid.Row="1"
              Name="ContextIndicator"
              HorizontalAlignment="Right"
              VerticalAlignment="Bottom"
              Margin="0,0,12,8"
              Canvas.ZIndex="1"
              ItemsSource="{x:Bind MyItemsSource}">
        <GridView.ItemTemplate>
            <DataTemplate x:DataType="data:Video">
                <Image Width="40" Height="40" Source="{x:Bind Display}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</Grid>