[英]Xamarin Forms Pop Out Navigation Empty on iOS
我已经使用Xamarin Forms开发了一个跨平台应用程序,该应用程序依赖于弹出式导航菜单(“ Navigation Master Detail”页面),可以在视图之间进行切换。
在iOS模拟器上,导航的行为符合预期; 但是,在物理设备上,导航菜单为空。
我已经测试了多个版本的iOS以排除兼容性问题,并且我已经确认UI元素可以正确加载-这已经确认列表数据没有加载。
这是我后面的导航主代码:
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>
iOS模拟器的系统版本和型号与您的真实设备是否不同? 尝试删除窗体项目下的两个文件夹“ obj”和“ bin”,然后重新构建。
这是由链接器行为配置引起的-如果禁用了链接,则不会填充导航列表。
将链接器行为设置为“仅链接框架SDK”可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.