ViewModel无法解析

时间:2019-04-22 18:57:37

标签: reactiveui

我有一个使用ReactiveUI的UWP应用程序。我导航到带有以下代码的页面:

Router.Navigate.Execute(new AccountListViewModel(this));

导航完成。但是我为导航创建的ViewModel并未分配给View中的ViewModel。 IViewFor <>的实现如下:

public sealed partial class AccountListView : IViewFor<AccountListViewModel>
{
    public static readonly DependencyProperty ViewModelProperty = DependencyProperty
        .Register(nameof(ViewModel), typeof(AccountListViewModel), typeof(AccountListView), null);

    public AccountListView()
    {
        this.InitializeComponent();

        this.WhenActivated(disposables =>
        {
           // My Bindings
           ...
        });
    }

    object IViewFor.ViewModel
    {
        get => ViewModel;
        set => ViewModel = (AccountListViewModel) value;
    }

    public AccountListViewModel ViewModel {
        get => (AccountListViewModel)GetValue(ViewModelProperty);
        set => SetValue(ViewModelProperty, value);
    }

还是我在这里完全出错了?

1 个答案:

答案 0 :(得分:2)

根据用于通用Windows平台和Windows Presentation Foundation的ReactiveUI RoutedViewHost implementation for Windows,视图模型一定应该分配给IViewFor.ViewModel属性。您可以在IScreen.Router.CurrentViewModel属性中跟踪更改,以确保更改。

如果确实如此,请确保将IScreen.Router属性正确绑定到特定于UWP的Router XAML控件的RoutedViewHost属性,并路由应该终于工作了。实际上,我最近在UWP上测试了该行为,并使用ReactiveUI 9.13.1和最新的UWP SDK对我来说很好用。尝试遵循routing tutorial来完全了解路由的工作原理。如果仍然无法解决问题,那么将编译后的最小修复文件上传到GitHub可以帮助我们更好地了解您的问题。另外,请加入ReactiveUI Slack,我们随时准备为您提供帮助。