不幸的是我相信UWP不支持TypeArguments
以及随后的基页的通用类型参数。您可以查看Prism GitHub 线程他们讨论的地方。因此,您必须选择其他注册选项之一。
Mvvmcross 提供了各种替代方法来注册您的View
to a ViewModel
。在 Mvvmcross 初始化期间,它将尝试注册您的ViewModel
给你的View
using MvxViewModelViewTypeFinder按以下顺序:
基于属性的注册:
你可以加MvxViewFor
属性到您的页面类。
[MvxViewFor(typeof(FirstViewModel))]
public sealed partial class FirstView : MvxWindowsPage
{
public FirstView()
{
this.InitializeComponent();
}
}
基于具体类型的注册:
您可以注册您的View
给你的ViewModel
通过指定 ViewModel 的具体类型。
public sealed partial class FirstView : MvxWindowsPage
{
public new FirstViewModel ViewModel => base.ViewModel as FirstViewModel;
public FirstView()
{
this.InitializeComponent();
}
}
或者对于 Android 和 iOS,可以使用通用基类:
// Android
public class FirstActivity : MvxAppCompatActivity<FirstViewModel>
// iOS
public class FirstViewController : MvxViewController<FirstViewModel>
基于公约的注册:
您可以让您的视图和 ViewModel 遵循相同的命名约定,Mvvmcross 将为您映射它们(xxxView 和 xxxViewModel)
View
public sealed partial class FirstView : MvxWindowsPage
{
public FirstView()
{
this.InitializeComponent();
}
}
视图模型
public class FirstViewModel : MvxViewModel