Я создал кроссплатформенное приложение с формами 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>