MVVM Displayer OberservableCollection<ViewModel> with unknown UserControl



我有点坚持我当前的项目,希望有人可以帮助我解决这个问题。

我的应用程序使用插件,以便用户能够向应用程序添加其他功能。现在我想让配置窗口具有相同的样式(也许插件需要某种配置)。

配置窗口加载所有插件并从插件获取配置 ViewModel。所有 ViewModel 都存储在 ObservableCollection 中。这些视图模型应显示在选项卡控件中(每个视图模型一个选项卡)

但是我不知道插件正在使用的用户控件类型,因为该插件提供了自己的UserControl用于配置目的。 否则,我将创建一个 TabControl,将其 ItemsSource 绑定到 ObservableCollection,并在资源(DataTemplates)中指定 UserControl。

但是,如果用户控件不知道编译时间,该怎么办?

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

你知道如何处理吗?

亲切问候

SyLuS

您可以使用ContentControl来实现此目的。

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

<ContentControl>
<ContentControl.Resources>
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<v:MyView/>
</DataTemplate>
</<ContentControl.Resources>
</ContentControl>

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

相关内容