2010-10-26 71 views
1

Silverlight中的控件有沒有像佔位符的東西? 如果我在我的視圖模型中有一個動態創建的控件,我如何將它綁定到Xaml中的某個元素? 它是實現這一正確的方式:Silverlight中的控件的佔位符

<ContentControl Content="{Binding MyControl}"></ContentControl> 

回答

2

不要動態創建的實際控制。將所需的所有東西放在視圖模型的屬性中,並將UI綁定到這些屬性。當然,您還需要將控件的DataContext設置爲視圖模型。詳情請參閱this overview

要回答更多問題,請將ContentControl的內容綁定到ViewModel中的屬性。該屬性可以是任何類型!然後在XAML中聲明一個DataTemplate用於顯示該屬性;這將代表用於裝訂該財產後的「皮膚」。將DataTemplate設置爲ContentControl的ContentTemplate(或者作爲該類型的默認值等)。 DataTemplate可以包含其他控件,其他綁定,任何東西。那至少是一個這樣做的方法有很多。您必須提出更具體的內容或從基礎知識開始閱讀。

1

根據您嘗試顯示的對象類型,您可以使用適當的子控件填充佔位符。例如,您可以在視圖模型中綁定到Foo類型的屬性,然後視圖會自動選擇一個FooView控件來顯示該屬性。請參閱other question以及鏈接文章中有關如何工作的示例代碼 - 它涉及數據模板。確保你先理解這些東西。

從你的other question我知道你實際上是想用MEF添加視圖。實質上,您正試圖添加帶有MEF插件的數據模板。這是一個更高級的用例,它是this question的主題。該問題的答案解釋瞭如何動態合併由插件提供的資源字典(其中包含數據模板信息)。