我所拥有的是:

<Grid x:Name="MyGrid">
    <FlyoutBase.AttachedFlyout>
        <MenuFlyout Placement="Bottom">
            <MenuFlyoutItem Text="Item 1" />
            <MenuFlyoutItem Text="Item 2" />
            <MenuFlyoutItem Text="Item 3" />
        </MenuFlyout>
    </FlyoutBase.AttachedFlyout>
</Grid>


我可能会丢失一些东西,因为我真的很惊讶,没有内置属性或检查控件的FlyoutBase.AttachedFlyout是否打开的方法。

有没有像下面提到的代码这样的简单方法来实现这一目标?

if(MenuFlyout.GetAttachedFlyout(MyGrid).IsOpen)
{
    // do something
}

最佳答案

不幸的是,IsOpen没有像MenuFlyout这样的属性。不要问我为什么!

这有点难看,但是您可以通过以下方式实现检查:

bool isMenuOpened;
MenuFlyout.GetAttachedFlyout(MyGrid).Opened += (sender, e) => isMenuOpened = true;
MenuFlyout.GetAttachedFlyout(MyGrid).Closed += (sender, e) => isMenuOpened = false;

10-06 15:03