You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP中MenuFlyout子项绑定Flyout无效问题求助

UWP MenuFlyout子项打开Flyout的解决方案

问题核心原因

UWP的MenuFlyoutItem本身没有内置Flyout属性,直接给它配置Flyout相关内容不会被系统识别,这就是你的代码被忽略的根本原因。

两种可行解决方法

方法一:用Button作为MenuFlyout的子项

Button控件原生支持Flyout属性,把它嵌入MenuFlyout即可实现点击弹出Flyout的效果,示例XAML代码:

<Button Content="设置">
    <Button.Flyout>
        <MenuFlyout>
            <!-- 用Button替代MenuFlyoutItem,直接绑定Flyout -->
            <Button Content="打开自定义Flyout">
                <Button.Flyout>
                    <Flyout>
                        <StackPanel Width="200" Padding="10">
                            <TextBlock Text="这是自定义Flyout内容" Margin="0 0 0 10"/>
                            <Button Content="确定" HorizontalAlignment="Right"/>
                        </StackPanel>
                    </Flyout>
                </Button.Flyout>
            </Button>
            <!-- 其他常规MenuFlyout项 -->
            <MenuFlyoutItem Text="常规设置"/>
        </MenuFlyout>
    </Button.Flyout>
</Button>

如果觉得Button和MenuFlyoutItem视觉风格不一致,可以通过修改Button的Style让两者外观统一。

方法二:在MenuFlyoutItem的Click事件中手动触发Flyout

如果必须使用MenuFlyoutItem,可以在后台代码里手动调用Flyout的ShowAt方法指定弹出位置。

XAML代码:

<Button Content="设置">
    <Button.Flyout>
        <MenuFlyout>
            <MenuFlyoutItem x:Name="FlyoutTriggerItem" Text="打开自定义Flyout" Click="FlyoutTriggerItem_Click"/>
            <MenuFlyoutItem Text="常规设置"/>
        </MenuFlyout>
    </Button.Flyout>
    <!-- 定义需要弹出的Flyout -->
    <Flyout x:Name="CustomFlyout">
        <StackPanel Width="200" Padding="10">
            <TextBlock Text="手动触发的Flyout内容" Margin="0 0 0 10"/>
            <Button Content="取消" HorizontalAlignment="Right"/>
        </StackPanel>
    </Flyout>
</Button>

后台C#代码:

private void FlyoutTriggerItem_Click(object sender, RoutedEventArgs e)
{
    var triggerItem = sender as MenuFlyoutItem;
    // 将点击的MenuFlyoutItem作为Flyout的弹出锚点
    CustomFlyout.ShowAt(triggerItem);
}

内容的提问来源于stack exchange,提问作者Sunk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:19:55