我没有找到包含操作menuflyout属性的示例,因此如果用户点击togglemenuitem它会保持打开状态,但如果焦点丢失或点击了esc按钮,它仍会关闭。
我更喜欢的功能是它保持打开状态,这样用户可以点击最多24个toggleMenuFlyoutItems,而不必每次都点击menuflyout按钮。
答案 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>