2012-09-26 81 views
0

我有一個使用MVVM的WPF應用程序。在WPF中綁定一個Incode DataTemplate

我知道,在XAML這樣做的方法,但我工作的一個插件架構,並與其中一個插件公開它的視圖模型到我的插件主機的視圖模型,它是DataTemplate中的解決方案上來。我想將插件視圖的生命週期管理權限留給WPF。我試圖讓插件暴露一個UserControl,但當WPF決定處理我的UserControl時遇到了問題,所以我不會在沒有怪異的哈希工作的情況下重新附加它。我有問題得到某種綁定工作,我可以將控件綁定到數據,並且它是我的數據模板的模板。

我有一個視圖模型看起來是這樣的:

public class MyViewModel 
{ 
    public DataTemplate SelectedTemplate{ get; set;} 
    public object SelectedViewModel {get; set;} 
} 

所選模板和視圖模型確定其他地方的代碼,但無關的我的問題。

我的問題是我如何綁定到DataTemplate,以便我知道如何顯示SelectedViewModel中顯示的數據。

的DataTemplate中是一個DataTemplate創建incode其中respresents:

<DataTemplate DataType="{x:Type vm:MyViewModel}"> 
    <v:MyUserControl /> 
</DataTemplate> 

我曾嘗試:

<UserControl Template="{Binding Path=SelectedTemplate}" 
    Content="{Binding Path=SelectedViewModel"} /> 

但用戶控件需要一個控件模板,而不是數據模板。

回答

1
<UserControl> 
    <ContentControl Content="{Binding SelectedViewModel}" ContentTemplate="{Binding SelectedTemplate}" /> 
</UserControl>