MVVM Displayer OberservableCollection<ViewModel> 具有未知的 UserControl

MVVM Displayer OberservableCollection<ViewModel> with unknown UserControl

我目前的项目有点卡住了,希望有人能帮我解决这个问题。

我的应用程序使用插件,以便用户能够向应用程序添加额外的功能。现在我想要相同样式的配置 window(也许插件需要某种配置)。

配置window加载所有插件并从插件中获取配置ViewModel。所有 ViewModel 都存储在一个 ObservableCollection 中。这些 ViewModel 应显示在 TabControl 中(每个 ViewModel 一个选项卡)

但我不知道插件使用的 UserControl 的类型,因为插件有自己的 UserControl 用于配置目的。 否则我会创建一个 TabControl,将其 ItemsSource 绑定到 ObservableCollection 并在 Resources (DataTemplates) 中指定 UserControl。

但是如果 UserControls 在编译时是未知的怎么办?

我考虑过使用 ObservableCollection 而不是 ViewModel,但我对此并不满意,甚至不知道这是否可行。

你知道如何处理吗?

亲切的问候,

SyLuS

您可以使用 ContentControl 来实现这一点。

它用于根据视图模型显示视图。 在您的 xaml 中,您可以指定应显示哪个视图。基于当前 DataContext.

的视图模型
<ContentControl>
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type vm:MyViewModel}">
            <v:MyView/>
        </DataTemplate>
    </<ContentControl.Resources>
</ContentControl>

但是当你说你正在使用一个插件系统时,可能是像 PRISM 这样的东西,你必须自动设置数据模板。以前从未这样做过。但也许我给了你一个可以开始的点。