【问题标题】:UWP AppBarButton MenuFlyout remove top marginUWP AppBarButton MenuFlyout 移除上边距
【发布时间】:2019-01-30 16:08:46
【问题描述】:

我有一个MenuFlyout,它是从AppBarButton 生成的。弹出窗口的上边距为 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# xaml uwp


    【解决方案1】:
    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 >
    

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

    【讨论】:

    • 不幸的是,这不起作用。当使用ShowAt 并指定点时,它将MenuFlyout 的左上角与AppBarButton 的左上角对齐。而且由于我不知道 MenuFlyout 的宽度,因此无法正确放置。
    • 垂直边距对我来说完全消失了,尤其是在小更新之后,我不知道你的宽度是什么意思
    • 我用尝试您的建议的图像更新了 OP。我的意思是 Flyout 从红点扩展。为了让 Flyout 适合窗口,我需要知道它的宽度,我只能通过自己明确定义它。
    • 谢谢。我尝试将 Min 和 Max 宽度放在 MenuFlyout 本身上,它给出了正确的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2021-04-04
    • 2020-08-31
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多