Разве View Location не работает в ReactiveUI в проекте net core? - PullRequest
0 голосов
/ 16 мая 2019

Я пытался использовать View Location https://reactiveui.net/docs/handbook/view-location/ в моем сетевом ядре Avalonia (проект https://github.com/AvaloniaUI/Avalonia)). Я регистрирую View как IViewFor в контейнере. Но представление все еще не разрешается в моем окне. Также , Я ищу в источниках ReactiveUI и похоже, что его функциональность еще не работает для ядра сети. Я прав?

1 Ответ

3 голосов
/ 16 мая 2019

Пакет Avalonia.ReactiveUI не включает зарегистрированную реализацию для элемента управления ViewModelViewHost на момент написания этого поста. В настоящее время рекомендуемый подход к работе с шаблонами данных и пользовательскими элементами управления с ReactiveUI и Avalonia выглядит примерно так:

<ListBox.DataTemplates>
    <DataTemplate DataType="interfaces:IFileViewModel">
        <views:FileView DataContext="{Binding}" />
    </DataTemplate>
</ListBox.DataTemplates>

Где FileView объявлено как ReactiveUserControl<IFileViewModel>.

public sealed class FileView : ReactiveUserControl<IFileViewModel>
{
    public FileView()
    {
        this.WhenActivated(disposables => { /* Handle activation here */ });
        AvaloniaXamlLoader.Load(this);
    }
}

См. соответствующую документацию . Вы также можете создать собственную ViewModelViewHost реализацию на основе ViewModelViewHost для Windows Presentation Foundation и зарегистрировать ее, используя Расположение службы ReactiveUI , если описанный выше подход вам не подходит. Исходники пакета Avalonia.ReactiveUI может помочь.

Если вы используете маршрутизацию ReactiveUI, то хорошей новостью является то, что она полностью поддерживает Avalonia, см. маршрутизация и активация с документацией ReactiveUI и Avalonia . RoutedViewHost работает правильно, разрешит IRoutableViewModel s и добавит для вас подходящие представления.

...