UWP10 视图模型属性为空

本文关键字:属性 模型 视图 UWP10 | 更新日期: 2023-09-27 18:37:21

我正在尝试使用 mvvmcross 构建一个 mvvm 应用程序。当我启动应用程序时,会发生空引用异常。

这是我使用MvvmCross.WindowsUWP.Views的代码隐藏文件。

 public sealed partial class MainView : MvxWindowsPage
{
    public MainView()
    {
        this.InitializeComponent();
        MainViewModel = (MainViewModel)ViewModel;            
    }
    public MainViewModel MainViewModel { get; set; }
    public PlayersViewModel PlayersViewModel { get; set; } = Mvx.IocConstruct<PlayersViewModel>();
}

这是我的应用程序.cs文件。

public class App : MvxApplication
{
    public override void Initialize()
    {
        RegisterAppStart<MainViewModel>();
    }
}
当我在 MainViewModel

= (MainViewModel)ViewModel 设置断点时;断点被命中,我可以看到 ViewModel 属性为空。 我做错了什么?提前谢谢。

UWP10 视图模型属性为空

ViewModel属性尚未在构造函数中初始化。这就是为什么它的价值仍然null .

您需要将赋值移动到稍后调用的其他方法,例如 OnNavigatedTo

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    MainViewModel = (MainViewModel)ViewModel;
}

更好的是,与其将ViewModel分配给您自己的自动实现属性,不如让MainViewModel getter执行转换。那么你甚至不需要做作业:

public MainViewModel MainViewModel => (MainViewModel)ViewModel;

不幸的是,UWP 不支持 XAML 中的泛型基类,否则你可以使用 MvxWindowsPage<MainViewModel> 作为基页,根本不需要执行强制转换。