我在这个命令栏中有一个包含CommandBar的Page AppBar我有AppBar按钮,当点击时打开一个如下所示的MenuFlyout:
<AppBarButton Icon="World" Label="Maps" ToolTipService.ToolTip="Map Providers!" IsCompact="True">
<AppBarButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">Unison Maps</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">Google Maps</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">Bing Maps</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">OpenStreetMap</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">OpenCycleMap</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">OCM Transport</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">OCM Landscape</MenuFlyoutItem>
<MenuFlyoutItem Click="mapProviderMenuFlyoutItem_Click">MapQuest OSM</MenuFlyoutItem>
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
第一个按钮效果很好,它显示菜单弹出按钮中的所有菜单项,但是其他按钮正在剥离菜单项,因为MenuFlyout不足以显示所有结果。
上述代码可以在项目中多次添加,并导致相同的错误。
有人有解决方案吗?
答案 0 :(得分:0)
编辑:它似乎是一个已知错误。有关解决方法,请参阅this answer。
我认为MenuFlyout
不适用于AppBarButton
。它更适合作为ListViewItem
的长按菜单。无论如何,我从未在任何官方微软应用程序中看到MenuFlyout
上使用的AppBarButton
。通常他们会使用ListPickerFlyout
代替。
例如,您可以使用以下XAML:
<Page
x:Class="App7.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Icon="World" Label="Maps" ToolTipService.ToolTip="Map Providers!" IsCompact="True">
<AppBarButton.Flyout>
<ListPickerFlyout ItemsSource="{Binding MapProviders}" />
</AppBarButton.Flyout>
</AppBarButton>
</CommandBar>
</Page.BottomAppBar>
<Grid></Grid>
</Page>
代码背后:
public sealed partial class MainPage : Page
{
public List<string> MapProviders { get; private set; }
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
MapProviders = new List<string>
{
"Unison Maps",
"Google Maps",
"Bing Maps",
"OpenStreetMap",
"OpenCycleMap",
"OCM Transport",
"OCM Landscape",
"MapQuest OSM"
};
}
}
生成这样的弹出窗口(可滚动):
当然,这是一个非常简单的示例,您可以通过其他方式设置ItemsSource
。