Windows Phone 8.1 MenuFlaout Ошибка?

1

У меня есть AppBar страницы, который содержит CommandBar в этой командной строке. У меня есть кнопки 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 недостаточно велико, чтобы отображать все результаты.

Вышеупомянутый код может быть добавлен несколько раз в проект и приводит к той же ошибке.

У кого-нибудь есть решение для этого?

Теги:
xaml
windows-store
windows-phone-8.1

1 ответ

0

EDIT: кажется, это известная ошибка. См. Этот ответ для обходного пути.


Я не думаю, что MenuFlyout предназначен для использования с AppBarButton. Это больше подходит в качестве меню longpress в ListViewItem. В любом случае, я никогда не видел MenuFlyout использовался в AppBarButton в любых официальных приложениях Microsoft. Обычно вместо этого они будут использовать 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"
        };
    }
}

для создания такого всплывающего окна (которое прокручивается):

Изображение 174551

Конечно, это очень упрощенный пример, и вы можете установить ItemsSource другими способами.

  • 0
    Microsoft делает это, чтобы добавить контекстное меню для кнопок приложений. msdn.microsoft.com/en-us/library/windows/apps/xaml/… . Приложение для магазина Windows ведет себя корректно, а приложение для Windows Phone 8.1 - нет. Это похоже на ошибку для меня.
  • 0
    Ваш нынешний метод - тот, который я использовал ранее, но я хотел сделать приложение Windows Phone 8.1 более универсальным и делиться большим количеством кода со своим аналогом планшета.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню