2014-11-17 35 views
0

我想動態地加載用戶控件到內容控件,所以我使用了基於DataTemplate的改變usercontrol的「Good Old Method」。內容控制+ DataTemplate動態改變UserControl DevExpress wpf

但是,在設置ViewModel屬性(即綁定到ContentControl內容屬性)時,ContentControl顯示的是包含相應viewmodel名稱的「text」,而不是加載相應的Usercontrol。

Window`s資源

<dxr:DXRibbonWindow.Resources> 
    <DataTemplate x:Key="TYRVM" DataType="{x:Type VM:ProductTYRViewModel}"> 
     <views:TYRUserControl/> 
    </DataTemplate> 
    <DataTemplate x:Key="THORVM" DataType="{x:Type VM:ProductTHORViewModel}"> 
     <views:THORUserControl/> 
    </DataTemplate> 
<dxr:DXRibbonWindow.Resources> 

Window`s代碼

<ContentControl Name="content" Content="{Binding Path=VMs,Mode=TwoWay}"/> 

現在我不`噸知道到底是什麼問題!

+0

你的DataTemplates嘗試ContentControl.Resources檢查它們是否正常工作。如果他們這樣做,你可以繼續檢查在DXRibbonWindow中發生了什麼。 – blindmeis

+0

也許你的綁定(虛擬機)不好。什麼輸出說?也許數據上下文沒有設置,或者contentcontrol有錯誤的數據上下文。你應該給我們更詳細的xaml代碼 – Igor

+0

@Igor我已經試過檢查ContentControl綁定,值得到更新。但問題是,而不是顯示usercontrol,ContentControl顯示「文本」,即viewmodel名稱。 –

回答

1

您指定的DataTemplate一個Key所以DataTemplate基礎上,Type自動應用。

這從MSDN:

這個屬性是非常相似的樣式類的TargetType的屬性。當您將此屬性設置爲數據類型而未指定x:Key時,DataTemplate會自動應用於該類型的數據對象。請注意,當您這樣做時,x:Key將隱式設置。因此,如果您將此DataTemplate分配給x:Key值,那麼您將覆蓋隱式的x:Key,並且DataTemplate將不會自動應用。

Link to MSDN : DataTemplate.DataType

+0

是的,這是答案...我昨天想出了! 反正謝謝你的解釋.. –