嵌套选项卡视图未绑定到单独的 ViewModel
Nested tabs views are not binding to separate ViewModel
我想将视图模型绑定到 xamarin 棱镜框架中的嵌套选项卡视图
我创建了 4 个主要页面(A、B、C、D)作为主选项卡,在第一个选项卡内(A)我又创建了两个选项卡(A1、A2)。但嵌套选项卡的数据不是 binding.even 视图模型 (A1,A2) 没有命中
MenuPage.xml
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.Views.MenuPage"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
xmlns:b="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
xmlns:views="clr-namespace:MyApp.Views"
BarBackgroundColor="White"
android:TabbedPage.ToolbarPlacement="Bottom"
NavigationPage.HasNavigationBar="True">
<TabbedPage.Children>
<views:A Title="A" Icon="abc.png" />
<views:B Title="B" Icon="abc.png" />
<views:C Title="C" Icon="abc.png" />
<views:D Title="D" Icon="abc.png"/>
</TabbedPage.Children>
</TabbedPage>
我的页面 A 就像
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:MyApp.Views"
x:Class="MyApp.Views.A">
<!--Pages can be added as references or inline-->
<TabbedPage.Children>
<views:A1 Title="A1" />
<views:A2 Title="A2" />
</TabbedPage.Children>
</TabbedPage>
而且我有单独的 A1 和 A2 视图模型。
因此,如果我直接将 A1 绑定到主导航页面,它将正常工作并呈现 data.but 如果我像上面的视图模型一样,A1 没有点击构造函数并且除了静态之外没有显示任何内容 data.i 是标签页的新手 navigation.any 帮助是 appreciated.this 我正在尝试实现的视图
我发现我们应该在页面的 XAML 中添加 AutowireViewModel
来加载我们想要的视图模型:
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
一般我们使用containerRegistry.RegisterForNavigation<>();
将自定义视图模型绑定到某个视图。但是您在根标签页中放置了一个子标签页。这导致嵌套视图丢失到相应视图模型的映射。添加 AutowireViewModel
后,此问题已解决。我们仍然可以使用 RegisterForNavigation
将您的自定义视图模型绑定到您的特殊视图,而不是自动命名对话。
这是我的简单嵌套标签页示例:https://github.com/landl0526/PrismTabDemo。更详细的代码可以参考
此外,这仅适用于 Android 平台,因为 iOS 只有底部对齐的标签栏。
我想将视图模型绑定到 xamarin 棱镜框架中的嵌套选项卡视图
我创建了 4 个主要页面(A、B、C、D)作为主选项卡,在第一个选项卡内(A)我又创建了两个选项卡(A1、A2)。但嵌套选项卡的数据不是 binding.even 视图模型 (A1,A2) 没有命中
MenuPage.xml
<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyApp.Views.MenuPage"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
xmlns:b="clr-namespace:Prism.Behaviors;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
xmlns:views="clr-namespace:MyApp.Views"
BarBackgroundColor="White"
android:TabbedPage.ToolbarPlacement="Bottom"
NavigationPage.HasNavigationBar="True">
<TabbedPage.Children>
<views:A Title="A" Icon="abc.png" />
<views:B Title="B" Icon="abc.png" />
<views:C Title="C" Icon="abc.png" />
<views:D Title="D" Icon="abc.png"/>
</TabbedPage.Children>
</TabbedPage>
我的页面 A 就像
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:MyApp.Views"
x:Class="MyApp.Views.A">
<!--Pages can be added as references or inline-->
<TabbedPage.Children>
<views:A1 Title="A1" />
<views:A2 Title="A2" />
</TabbedPage.Children>
</TabbedPage>
而且我有单独的 A1 和 A2 视图模型。
因此,如果我直接将 A1 绑定到主导航页面,它将正常工作并呈现 data.but 如果我像上面的视图模型一样,A1 没有点击构造函数并且除了静态之外没有显示任何内容 data.i 是标签页的新手 navigation.any 帮助是 appreciated.this 我正在尝试实现的视图
我发现我们应该在页面的 XAML 中添加 AutowireViewModel
来加载我们想要的视图模型:
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
一般我们使用containerRegistry.RegisterForNavigation<>();
将自定义视图模型绑定到某个视图。但是您在根标签页中放置了一个子标签页。这导致嵌套视图丢失到相应视图模型的映射。添加 AutowireViewModel
后,此问题已解决。我们仍然可以使用 RegisterForNavigation
将您的自定义视图模型绑定到您的特殊视图,而不是自动命名对话。
这是我的简单嵌套标签页示例:https://github.com/landl0526/PrismTabDemo。更详细的代码可以参考
此外,这仅适用于 Android 平台,因为 iOS 只有底部对齐的标签栏。