0

我尝试 在我的网络核心 Avalonia ( https://github.com/AvaloniaUI/Avalonia ) 项目中使用查看位置https://reactiveui.net/docs/handbook/view-location/ 。我在容器中将 View 注册为 IViewFor 。但是视图仍然无法在我的窗口上解析。另外,我搜索了 ReactiveUI 的来源,看起来它的功能还不适用于网络核心。我对吗?

4

1 回答 1

3

在撰写本文时,Avalonia.ReactiveUI包不包含ViewModelViewHost控件的注册实现。目前,推荐的使用数据模板和用户控件的方法ReactiveUIAvalonia这样写的:

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

WhereFileView被声明为ReactiveUserControl<IFileViewModel>.

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

请参阅相关文档。如果上述方法不适合您,您还可以基于 ViewModelViewHost for Windows Presentation Foundation创建自己的ViewModelViewHost实现,并使用ReactiveUI 服务位置注册它。Avalonia.ReactiveUI 包源可能会有所帮助。

如果您正在使用 ReactiveUI 路由,那么好消息是它完全支持 Avalonia,请参阅ReactiveUI 和 Avalonia 文档的路由和激活RoutedViewHost工作正常,将为IRoutableViewModel您解析和嵌入适当的视图。

于 2019-05-16T20:53:29.957 回答