如何使用MVVMCross为Windows Phone通用平台连接View和ViewModel?

时间:2015-10-09 01:46:28

标签: xamarin windows-phone-8.1 mvvmcross

我有一个pcl dll(Xamarin),所有的视图模型,模型,服务,接口,转换器都在这个项目上。

我已经在Android和IOS上使用此核心,现在将启动Windows Phone应用程序。

我现在的主要问题是,如何使viewmodel成为视图的datacontext。对于示例:LoginViewModel.cs(核心)和LoginView.xaml ...

我正在使用MVVMCross,Windows Phone项目是8.1

比你提前。

更新

我试过了:

<views:MvxWindowsPage
    x:Class="Tocalivros.WindowsPhone.Views.LoginView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Tocalivros.WindowsPhone.Views"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:views="using:Cirrious.MvvmCross.WindowsCommon.Views"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">


public sealed partial class LoginView : MvxWindowsPage<LoginViewModel>
    {
        public LoginView()
        {
            this.InitializeComponent();
        }

但现在我收到此错误:&#34;严重程度代码说明项目文件行 错误CS0263&#39; LoginView&#39;的部分声明不得指定不同的基类&#34;

根据示例,我尝试了不同的方法,而不是创建类型视图模型的视图,我创建一个ViewModel作为属性并将其设置为视图的DataContext。 像这样:

public sealed partial class LoginView:MvxWindowsPage     {             public new LoginViewModel ViewModel             {                 get {return(LoginViewModel)base.ViewModel; }                 set {base.ViewModel = value; }             }

        public LoginView()
        {
            this.InitializeComponent();
            this.DataContext = ViewModel;
        }

但是这样,viewmodel不会以所需的参数启动...(IServices)

这让我觉得最好的方法是第一个:

public sealed partial class LoginView : MvxWindowsPage<LoginViewModel> but I get error...

1 个答案:

答案 0 :(得分:1)

您可以使用MvvmCross中的其他平台。

public class LoginPage : MvxWindowsPage<LoginViewModel>
{
}

在您的视图中,您会看到以下内容:

<views:MvxWindowsPage
    x:Class="somenamspace.Views.LoginPage">
<!-- Put your layout here -->
</views:MvxWindowsPage>

现在为该视图完成了datacontext。