C# WinRT弹出窗口的奇怪行为

C# WinRT弹出窗口的奇怪行为,c#,xaml,gridview,windows-runtime,windows-8.1,C#,Xaml,Gridview,Windows Runtime,Windows 8.1,我在GridView的DataTemplate中有一个弹出窗口。 DataTemplate有2个按钮,用于打开此弹出窗口。这非常有效。但是当GridView滚动时,我看到一些不稳定的行为 弹出窗口打开 滚动GridView时,弹出窗口保持在页面上 GridView项目模板的XAML代码 这是预期的行为弹出窗口故意在所有其他元素上显示最高的z索引。一个简单的解决方法是,将弹出窗口全部去掉,并将{Binding IsPagesPopupOpen}移动到它内部的网格,并在网格的可见性上使用它,而使

我在GridView的DataTemplate中有一个弹出窗口。 DataTemplate有2个按钮,用于打开此弹出窗口。这非常有效。但是当GridView滚动时,我看到一些不稳定的行为

弹出窗口打开

滚动GridView时,弹出窗口保持在页面上

GridView项目模板的XAML代码


这是预期的行为<代码>弹出窗口故意在所有其他元素上显示最高的z索引。一个简单的解决方法是,将
弹出窗口
全部去掉,并将
{Binding IsPagesPopupOpen}
移动到它内部的
网格
,并在网格的
可见性
上使用它,而使用可见性转换器。但它需要移动到底部,以便在内容上方显示

为了更好地解释。做这个,而不是你如何拥有它

<DataTemplate x:Key="BrandItemTemplate">
  <Grid HorizontalAlignment="Left" Width="180" Height="150" Background="White">
    <Grid.RowDefinitions>
      <RowDefinition Height="125"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>        

   <Image Source="{Binding Image}" Stretch="Fill"  AutomationProperties.Name="{Binding Title}" VerticalAlignment="Top"/>
   <Border Visibility="{Binding IsNew,Converter={StaticResource BooleanToVisibilityConverter}}" VerticalAlignment="Top" Height="15" Width="25" Margin="5" Background="DarkGreen" CornerRadius="5" HorizontalAlignment="Right">
    <TextBlock Text="NEW" FontSize="7" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold"/>
   </Border>
     <Grid Grid.Row="1" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}" Height="25">
      <TextBlock Text="{Binding Title}" FontSize="12" AutomationProperties.Name="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5 0 0 0" FontWeight="Medium"/>
      <StackPanel Margin="0 -12 05 0" HorizontalAlignment="Right" VerticalAlignment="Top" Orientation="Horizontal">
        <Image Source="/Assets/Icons/pagesIcon.png" Height="30">
          <interactivity:Interaction.Behaviors>
            <core:EventTriggerBehavior EventName="Tapped">
              <core:InvokeCommandAction Command="{Binding TappedCommand}" CommandParameter="PagesIcon"/>
            </core:EventTriggerBehavior>
          </interactivity:Interaction.Behaviors>
        </Image>
        <Image Source="/Assets/Icons/refIcon.png" Height="30" Margin="10 0 0 0">
          <interactivity:Interaction.Behaviors>
            <core:EventTriggerBehavior EventName="Tapped">
              <core:InvokeCommandAction Command="{Binding TappedCommand}" CommandParameter="ReferencesIcon"/>
            </core:EventTriggerBehavior>
          </interactivity:Interaction.Behaviors>
        </Image>
      </StackPanel>
    </Grid>

    <!-- We move it down here to ensure it appears over everything and without having to set a fixed z-index, and add your visibility converter -->
    <Grid Width="180" Height="150" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}"
          Visibility="{Binding IsPagesPopupOpen, Converter={StaticResource BooleanToVisibilityConverter}}">

      <ListView ItemsSource="{Binding PopupList}"  Padding="8" ScrollViewer.VerticalScrollBarVisibility="Hidden" SelectionMode="None">
        <ListView.ItemTemplate>
          <DataTemplate>
            <TextBlock Text="{Binding}" FontSize="12" FontWeight="Medium"/>
          </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.ItemContainerStyle>
          <Style TargetType="ListViewItem">
            <Setter Property="Height" Value="30"/>
          </Style>
        </ListView.ItemContainerStyle>
      </ListView>
      <Image Source="/Assets/Icons/closeIcon.png"  Height="25" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="8">
        <interactivity:Interaction.Behaviors>
          <core:EventTriggerBehavior EventName="Tapped">
            <core:CallMethodAction MethodName="CloseIconTapped" TargetObject="{Binding Mode=OneWay}"/>
          </core:EventTriggerBehavior>
        </interactivity:Interaction.Behaviors>
      </Image>

    </Grid>

  </Grid>
</DataTemplate>

极好的解决方案!谢谢!