ViewModel не разрешена - PullRequest
       15

ViewModel не разрешена

0 голосов
/ 22 апреля 2019

У меня есть приложение UWP, использующее ReactiveUI.Я перехожу на страницу с этим кодом:

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

Навигация завершена.Но ViewModel, который я создал для навигации, не назначен моей ViewModel в View.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 Ответ

2 голосов
/ 22 апреля 2019

В соответствии с реализацией ReactiveUI RoutedViewHost для Windows , которая используется для универсальной платформы Windows и для Windows Presentation Foundation, модель представления обязательно должна быть присвоена свойству IViewFor.ViewModel. Вы можете отслеживать изменения в свойстве IScreen.Router.CurrentViewModel, чтобы убедиться, что оно меняется.

Если это так, убедитесь, что вы правильно связали свое свойство IScreen.Router со свойством Router специфического для UWP RoutedViewHost элемента управления XAML, и маршрутизация должна наконец-то сработать. Фактически, я недавно протестировал это поведение на UWP, и оно отлично работало для меня с ReactiveUI 9.13.1 и последним UWP SDK. Попробуйте выполнить руководство по маршрутизации , чтобы полностью понять, как работает маршрутизация. Если это по-прежнему не работает для вас, то загрузка минимального репро с компиляцией на GitHub может помочь нам лучше понять вашу проблему. Кроме того, присоединяйтесь ReactiveUI Slack , мы всегда готовы помочь.

...