我有一个使用 MVVM 的 WPF 应用程序。
我知道在 XAML 中有这样做的方法,但我正在研究插件架构并提出了一个解决方案,其中插件将它的视图模型公开给我的插件主机的视图模型和它的数据模板。我想将插件视图的生命周期管理留给 WPF。我曾尝试让插件公开一个 UserControl,但是当 WPF 决定处置我的 UserControl 时遇到了问题,因此如果没有奇怪的 hacky 解决方法,我不会重新附加它。我在将某种绑定工作到可以将控件绑定到数据并将其模板绑定到我的数据模板的位置时遇到问题。
我有一个看起来像这样的 ViewModel:
public class MyViewModel
{
public DataTemplate SelectedTemplate{ get; set;}
public object SelectedViewModel {get; set;}
}
所选模板和视图模型在代码中的其他位置确定,但与我的问题无关。
我的问题是如何绑定到 DataTemplate 以便我知道如何显示 SelectedViewModel 中显示的数据。
DataTemplate 是一个 DataTemplate 创建的 incode,它表示:
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<v:MyUserControl />
</DataTemplate>
我努力了:
<UserControl Template="{Binding Path=SelectedTemplate}"
Content="{Binding Path=SelectedViewModel"} />
但 UserControl 需要一个控件模板而不是数据模板。