Пакет 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 и добавит для вас подходящие представления.