UWP10 ViewModel 属性 为空
UWP10 ViewModel property is null
我正在尝试使用 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>();
}
这是我的 app.cs 文件。
public class App : MvxApplication
{
public override void Initialize()
{
RegisterAppStart<MainViewModel>();
}
}
当我在 MainViewModel = (MainViewModel)ViewModel 设置断点时;断点被击中,我可以看到 ViewModel 属性 为空。我做错了什么?提前致谢。
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>
作为基础页面,根本不需要进行转换。
我正在尝试使用 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>();
}
这是我的 app.cs 文件。
public class App : MvxApplication
{
public override void Initialize()
{
RegisterAppStart<MainViewModel>();
}
}
当我在 MainViewModel = (MainViewModel)ViewModel 设置断点时;断点被击中,我可以看到 ViewModel 属性 为空。我做错了什么?提前致谢。
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>
作为基础页面,根本不需要进行转换。