使用MVVM的UWP中的弹出菜单

时间:2016-07-13 16:39:15

标签: mvvm uwp windows-10-universal flyout

我试图在Windows 10应用程序(使用MVVM)中实现一个Flyout菜单,该菜单在按住GridView的项目时打开。我一直在寻找,但我找不到任何适合我的例子。弹出菜单未打开以显示选项。有谁知道我该怎么做?

<GridView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <FlyoutBase.AttachedFlyout>
                    <MenuFlyout>
                        <MenuFlyoutItem Text="Delete" Command="{Binding DeleteCommand}"/>
                    </MenuFlyout>
            </FlyoutBase.AttachedFlyout>
            <Image Source="{Binding Dictionary}" Height="25"/>
            <TextBlock Text="{Binding Title}" Foreground="White" Width="170"/>
        </StackPanel>
    </DataTemplate>
</GridView.ItemTemplate>

注意:https://marcominerva.wordpress.com/2013/12/17/using-a-behavior-to-open-attached-flyouts-in-winows-81-store-apps/

中找到解决方案

1 个答案:

答案 0 :(得分:1)

我认为你想要设置的是StackPanel.Flyout而不是FlyoutBase

<GridView.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <StackPanel.Flyout>
                    <MenuFlyout>
                        <MenuFlyoutItem Text="Delete" Command="{Binding DeleteCommand}"/>
                    </MenuFlyout>
            </StackPanel.Flyout>
            <Image Source="{Binding Dictionary}" Height="25"/>
            <TextBlock Text="{Binding Title}" Foreground="White" Width="170"/>
        </StackPanel>
    </DataTemplate>
</GridView.ItemTemplate>

或者如果这对您不起作用,您可以定位GridViewItem.Flyout

<GridView>
   <GridView.Resources>
      <Style TargetType="GridViewItem">
          <Setter Property="Flyout">
             <Setter.Value>
                <MenuFlyout>
                   <MenuFlyoutItem Text="Delete" Command="{Binding DeleteCommand}"/>
                </MenuFlyout>
             </Setter.Value>
          </Setter>
      </Style>
</Gridview.Resources>