首页 > 解决方案 > UWP AppBarButton MenuFlyout 移除上边距

问题描述

我有一个MenuFlyoutAppBarButton. 弹出窗口的上边距为 4,我曾经像这样删除它:

<MenuFlyout.MenuFlyoutPresenterStyle>
    <Style TargetType="MenuFlyoutPresenter">
        <Setter Property="Margin" Value="0,-4,0,0"/>
    </Style>
</MenuFlyout.MenuFlyoutPresenterStyle>

但是,在我将目标版本从 1803 升级到 1809 后,这不再起作用。

如何再次删除边距?请查看我的代码和下面的问题图片。弹出按钮从带有省略号图标的按钮生成。

<AppBarButton Style="{StaticResource AppBarMoreButtonStyle}" Name="Menu" Width="{StaticResource TopBarHeight}" Icon="More">
    <AppBarButton.Flyout>
        <MenuFlyout>
            <ToggleMenuFlyoutItem Name="Switch" Click="Switch_OnClick" Text="Item" HorizontalAlignment="Stretch"/>
            <MenuFlyoutItem Text="{StaticResource ButtonLogoutContent}" Click="AppBarButtonSignOut_OnClick" HorizontalAlignment="Stretch"/>
        </MenuFlyout>
    </AppBarButton.Flyout>
</AppBarButton>

菜单弹出

编辑:Xeorge Xeorge 建议的结果。Flyout的起点:

菜单弹出

标签: c#xamluwp

解决方案


private void AppbarButton_Tapped(object sender, TappedRoutedEventArgs e)
        {
            YourFly.ShowAt(AppbarButton, new Point(AppbarButton.ActualWidth-160, AppbarButton.ActualWidth-10));
        }

您必须使用 x:Name 而不是 Name 将浮出控件放在相反节点内。

   <MenuFlyout x:Name="YourFly"  >
            <MenuFlyoutItem Text="Item"  x:Name="item1"  Width="160"/>
            <MenuFlyoutItem Text="Log out" x:Name="item2" Width="160"/> 
        </MenuFlyout >

作为您问题的延伸,您应该在弹出项目上设置固定宽度。


推荐阅读