ReactiveUI WPF маршрутизация - PullRequest
       12

ReactiveUI WPF маршрутизация

0 голосов
/ 17 октября 2018

Я зарегистрировал все виды и модели представлений в методе App.xaml OnStartup следующим образом:

var model = new OnlineRegistrationsViewModel(_dataService, this);
Locator.CurrentMutable
   .RegisterViewsForViewModels(Assembly.GetCallingAssembly());
Locator.CurrentMutable.RegisterConstant<IScreen>(this);            
Router.Navigate.Execute(model).Subscribe();
base.OnStartup(e);

Представление запускается, как и ожидалось, но ViewModel имеет значение null.Таким образом, данные не отображаются в результате.

Класс View:

public partial class MainWindow : IViewFor<OnlineRegistrationsViewModel>
{
    public static readonly DependencyProperty ViewModelProperty
        = DependencyProperty.Register("ViewModel",
            typeof(OnlineRegistrationsViewModel), typeof(MainWindow),
            new PropertyMetadata(null));

    public MainWindow()
    {
        InitializeComponent();

        this.WhenActivated(disposableReg =>
        {
            this.OneWayBind(ViewModel,
                vm => vm.OnlineRegistrationsSearchResults,
                v => v.OnlineRegistrationDataGrid.ItemsSource)
                .DisposeWith(disposableReg);
        });
    }

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

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

Я искал примеры, в которых они, кажется, создают экземпляр модели представления непосредственно в представлении.,Что я упустил?Насколько я понимаю, первый подход модели представления должен правильно соединить модель представления с объектом представления маршрутизатором ReactiveUI.

Я создал небольшое приложение wpf и добавил такой элемент:

<Window x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp1"
    xmlns:rx="clr-namespace:ReactiveUI;assembly=ReactiveUI"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>
    <rx:RoutedViewHost />
</Grid>

Кажется, он не распознается в xaml.

Спасибо.

...