点击togglemenuflyout项目后如何保持menuflyout打开?

时间:2015-07-30 17:37:49

标签: c#

我没有找到包含操作menuflyout属性的示例,因此如果用户点击togglemenuitem它会保持打开状态,但如果焦点丢失或点击了esc按钮,它仍会关闭。

我更喜欢的功能是它保持打开状态,这样用户可以点击最多24个toggleMenuFlyoutItems,而不必每次都点击menuflyout按钮。

2 个答案:

答案 0 :(得分:2)

我知道这个帖子已经老了,但我发现了一些可能有用的东西。 FlyoutBaseClosingEventArgs有一个取消属性,启动Win10,v1607; (根据UWP API Doc)。如果要保持MenuFlyout打开,可以捕获MenuFlyout Closing事件并将Cancel设置为true。

<MenuFlyout x:Name="MyFlyout" 
            Closing="MyFlyout_Closing" 
            Closed="MyFlyout_Closed" 
    <MenuFlyoutItem />            
    <MenuFlyoutItem />
</MenuFlyout>

private void MyFlyout_Closing(Windows.UI.Xaml.Controls.Primitives.FlyoutBase sender, Windows.UI.Xaml.Controls.Primitives.FlyoutBaseClosingEventArgs args)
{
    // Whatever logic you need to decide
    args.Cancel = true; 
}

这可能不太理想,因为您似乎需要在MenuFlyout外部设置另一个属性以用作触发器让它关闭。可能还有一种方法可以在项目上使用Tag属性。我希望他有用。最后,这是我在这里发表的第一篇文章,对于任何不正确的职位礼仪感到抱歉。

答案 1 :(得分:1)

我通过切换一个MenuFlyout元素解决了这个问题。相反,使用AppBar和Flyout而不是MenuFlyout。这是来自MainPage.xaml的适当的XAML代码

<AppBar Grid.Row="3" Background="LightGray">
    <StackPanel Orientation="Horizontal">
        <AppBarButton Label="Filter">
            <AppBarButton.Icon>
                <SymbolIcon Symbol="Filter"/>
            </AppBarButton.Icon>
            <AppBarButton.Flyout>
                <Flyout>
                    <StackPanel>
                        <CheckBox x:Name="IncludeCompletedCheckbox" IsChecked="True" Click="FilterCompletedTasks_Clicked">Completed</CheckBox>
                    </StackPanel>
                </Flyout>
            </AppBarButton.Flyout>
        </AppBarButton>
        <AppBarButton Label="Sort">
            <AppBarButton.Icon>
                <SymbolIcon Symbol="Sort"/>
            </AppBarButton.Icon>
            <AppBarButton.Flyout>
                <Flyout>
                    <StackPanel Orientation="Vertical">
                        <RadioButton x:Name="SortMethod_Unsorted" GroupName="SortOptions" IsChecked="True" Click="SortTasks_Clicked">Unsorted</RadioButton>
                        <RadioButton x:Name="SortMethod_ByTitle" GroupName="SortOptions" Click="SortTasks_Clicked">By Title</RadioButton>
                    </StackPanel>
                </Flyout>
            </AppBarButton.Flyout>
        </AppBarButton>
    </StackPanel>
</AppBar>