【问题标题】:Prism Shared Viewmodel棱镜共享视图模型
【发布时间】:2017-11-21 22:13:19
【问题描述】:
  • 平台:Xamarin 表单
  • 棱镜版本:6.3.0
  • Xamarin 版本(如果适用):2.3.4

你好,我正在使用棱镜。我有一个Tabbedpage 我如何为所有女儿视图共享一个视图模型?

我的 xaml:

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
          xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
          xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
          xmlns:views="clr-namespace:MySednaApp.Views;assembly=MySednaApp"
          xmlns:view="clr-namespace:MySednaApp.View;assembly=MySednaApp"
          prism:ViewModelLocator.AutowireViewModel="True"
          x:Class="MySednaApp.Views.PubblicaArticoliTabbedPage"
          Title="{view:Translate PubblicaArticoli}" 
  <TabbedPage.ToolbarItems 
      <ToolbarItem x:Name="Delete2" Icon="ico_delete.png" Text="Elimina"    Command="{Binding delete}"    
          <ToolbarItem.Order 
              <OnPlatform x:TypeArguments="ToolbarItemOrder" 
                  <On Platform="iOS" Primary</On 
                  <On Platform="Android" Secondary</On 
              </OnPlatform 
          </ToolbarItem.Order 
      </ToolbarItem 
      <ToolbarItem x:Name="Save" Icon="ico_save.png"  Command="{Binding save}"  Order="Primary" Priority="0" / 
  </TabbedPage.ToolbarItems 
  <views:PubblicaArticoliDettaglioPage x:Name="pubblicaArticoliDettaglioPage"/ 
  <views:PubblicaArticoliGaugePage  x:Name="pubblicaArticoliGaugePage"/ 
  <views:PubblicaArticoliFotoPage  x:Name="pubblicaArticoliFotoPage"/ 
</TabbedPage 

【问题讨论】:

    标签: c# xamarin xamarin.forms prism


    【解决方案1】:

    简单,只需在代码隐藏中将每个选项卡的 BindingContext 设置为 TabbedPage 的 BindingContext。

    【讨论】:

    • 谢谢您的回复,如何从孩子们的背后获取标签页的绑定上下文?
    • 你给每个页面起了一个名字,所以用这个名字来访问它们pubblicaArticoliDettaglioPage.BindingContext = this.BindingContext
    • 谢谢,这行得通。但是如果我想在不是标签页的不同页面之间共享相同的视图模型?我该怎么办。不能使用 viewmodellocator 解决吗?
    • 您可以考虑创建一个基类来满足您的所有功能并创建从它继承的不同虚拟机,这样您就可以使用默认的虚拟机定位器,我知道这不是您想要的...
    【解决方案2】:

    您必须在 XAML 页面中添加这些属性才能绑定视图模型

    xmlns:mvvm="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
    mvvm:ViewModelLocator.AutowireViewModel="True"
    

    【讨论】:

    • 但我想将视图模型的同一个实例分配给所有孩子
    猜你喜欢
    • 2019-06-12
    • 2020-10-03
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2021-10-24
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多