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

时间:2016-11-14 15:34:17

标签: c# xaml mvvm xamarin.forms

当我在App.xaml中声明我的MainViewModel类时,我在加载时遇到此错误:

Xamarin.Forms.Xaml.XamlParseException:位置7:6。无法分配属性“资源”:“MyPCL.Client.ViewModels.MainViewModel”和“Xamarin.Forms.ResourceDictionary”之间的类型不匹配

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

如何在全局ViewModel上声明,以便我可以在每个页面上执行此操作:

 BindingContext="{StaticResource MainViewModel}"

3 个答案:

答案 0 :(得分:2)

您需要在ResourceDictionary代码中声明Application.Resources

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

答案 1 :(得分:0)

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

public class MainContentPage : ContentPage {

    protected MainViewModel viewModel;

    public MainContentPage() { BindingContext = (viewModel = new MainViewModel()); }
}

答案 2 :(得分:0)

应该是:

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

正如错误消息所指出的那样。你快到了。