Всплывающая навигация форм Xamarin пуста на iOS - PullRequest
0 голосов
/ 02 сентября 2018

Я создал кроссплатформенное приложение с формами Xamarin, которое использует всплывающее меню в стиле навигации (страница «Подробная информация о навигации») для переключения между представлениями.

В iOS-симуляторах навигация ведет себя как задумано; однако на физических устройствах навигационное меню пусто.

Я протестировал несколько версий iOS, чтобы исключить проблемы совместимости, и я подтвердил, что элементы пользовательского интерфейса загружаются правильно - это подтвердило, что данные списка не загружаются.

Вот мой основной код навигации:

public partial class NavigationMaster : ContentPage
{
    public ListView ListView;

    public NavigationMaster()
    {
        Icon = Services.PlatformImage.Resolver("menu.png");
        InitializeComponent();

        BindingContext = new NavigationMasterViewModel();
        ListView = MenuItemsListView;
    }

    class NavigationMasterViewModel : INotifyPropertyChanged
    {

        private ObservableCollection<NavigationMenuItem> _menuItems = new ObservableCollection<NavigationMenuItem>();
        public ObservableCollection<NavigationMenuItem> MenuItems
        {
            get { return _menuItems; }
            set
            {
                _menuItems = value;
                OnPropertyChanged(nameof(MenuItems));
            }
        }

        public NavigationMasterViewModel()
        {
            MenuItems = new ObservableCollection<NavigationMenuItem>(new[]
            {
                new NavigationMenuItem { Id = 1, Title = "Projects", TargetType = typeof(Views.Projects)},
                new NavigationMenuItem { Id = 2, Title = "Tickets", TargetType = typeof(Views.Tickets)},
                new NavigationMenuItem { Id = 3, Title = "Documents", TargetType = typeof(Views.Documents)},
                new NavigationMenuItem { Id = 4, Title = "Calendar", TargetType = typeof(Views.Calendar)},
                new NavigationMenuItem { Id = 5, Title = "Discussion", TargetType = typeof(Views.Discussion)},
            });
        }
        #region INotifyPropertyChanged Implementation
        public event PropertyChangedEventHandler PropertyChanged;
        void OnPropertyChanged([CallerMemberName] string propertyName = "")
        {
            if (PropertyChanged == null)
                return;

            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
        #endregion
    }
}

И мой XAML:

<StackLayout>
    <ListView x:Name="MenuItemsListView"
              SeparatorVisibility="Default"
              HasUnevenRows="False"
              ItemsSource="{Binding MenuItems}"
              >
        <ListView.Header>
            <Grid BackgroundColor="#222222">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Image Source="Logo.png" Margin="40" Scale="0.5" HorizontalOptions="Center" VerticalOptions="Center" Grid.Row="1" Grid.Column="1"/>
            </Grid>
        </ListView.Header>
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout HorizontalOptions="Start">
                        <Label Text="{Binding Title}"
                               TextColor="#000000"
                               VerticalOptions="Start"
                               VerticalTextAlignment="Center" 
                               FontSize="Small"
                               Margin="10"/>
                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Это было вызвано настройкой поведения компоновщика - если связывание отключено, список навигации не заполняется.

Установка поведения компоновщика на «Link Framework SDKs Only» решила проблему.

0 голосов
/ 03 сентября 2018

Отличается ли системная версия и модель симуляторов iOS от вашего реального устройства? Попробуйте удалить две папки «obj» и «bin» в вашем проекте форм и пересобрать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...