在Xamarin Forms中的页面之间共享单个ViewModel实例



当我在App.xaml中声明MainViewModel类时,我在加载时得到这个错误:

Xamarin.Forms.Xaml。XamlParseException: Position 7:6。不能分配属性"Resources":在"MyPCL.Client.ViewModels. view "之间的类型不匹配。" MainViewModel"one_answers"Xamarin.Forms.ResourceDictionary"

  <Application.Resources>
    <viewModels:MainViewModel x:Key="MainViewModel"/>
  </Application.Resources>

我如何在全局ViewModel上声明,以便在每个页面上我都可以这样做:

 BindingContext="{StaticResource MainViewModel}"

您需要在Application.Resources标签中声明ResourceDictionary:

  <Application.Resources>
    <ResourceDictionary>
        <viewModels:MainViewModel x:Key="MainViewModel"/>
    </ResourceDictionary>
  </Application.Resources>

您也可以创建一个新的衍生ContentPage,在构造函数中将其设置为BindingContext,如下所示:

public class MainContentPage : ContentPage {
    protected MainViewModel viewModel;
    public MainContentPage() { BindingContext = (viewModel = new MainViewModel()); }
}

应该是:

<Application.Resources>
   <ResourceDictionary>
    <viewModels:MainViewModel x:Key="MainViewModel"/>
   </ResourceDictionary>
  </Application.Resources>

作为错误消息指出。

最新更新