【发布时间】:2016-05-17 22:15:18
【问题描述】:
我的应用程序中有多个位置,我将 ContentControl 放在 xaml 中,但我事先不知道它的 Content 会是什么。实施此方案的最佳做法是什么?
现在我正在考虑两种方法:
- 将
ContentControl.Content绑定到视图模型并使用DataTemplates 的字典来查找合适的视图。我对这种方法的问题是,即使我要在字典中列出所有可能的组合,在某些情况下,我在编译时根本不知道视图的确切类型(或视图模型,如果有的话)。我认为,使用这种方法托管非 WPF 内容也会遇到麻烦。 -
创建某种接口:
interface IContentPlugin : IDisposable { object View { get; } }并直接将
ContentControl.Content绑定到IContentPlugin.View。然后我可以有这个接口的多个实现,并在需要时交换它们。但是这个解决方案并不适合 MVVM 应用程序,因为它迫使我在我的视图模型中引用IContentPlugins。
您认为最佳选择是什么以及为什么?也许有更好的方法?
【问题讨论】: