我有一個視圖模型,其屬性爲Fields
,它是ObservableCollection<FieldVM>
。在使用該屬性的觀點,我有一個ItemsControl
像這樣:Silverlight中的DataTemplate.DataType替代
...
<ItemsControl ItemsSource="{Binding Fields}" />
...
FieldVM
是一個抽象類,通過這樣的類作爲TextFieldVM
和EnumFieldVM
實現。在運行時,這些FieldVM
實現將被添加到Fields
屬性中,我希望它們在我的視圖中顯示並顯示相關視圖。
在WPF中,這樣做很簡單,我一直都這樣做。你只是這樣做是合適的資源字典,一切都按預期工作:
<DataTemplate DataType="{x:Type vm:TextFieldVM}">
<v:TextFieldView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:EnumFieldVM}">
<v:EnumFieldView />
</DataTemplate>
現在,在Silverlight中工作的第一次,我希望我可以做同樣的事情,但DataTemplate
沒有一個DataType
屬性。我很難過。 Silverlight的做法是什麼?
感謝您的建議。它有效,我將它標記爲答案,但這不是一個真正理想的解決方案......它更像是一種醜陋的黑客攻擊。我不禁感到必須有一個更加適合WPF的方式來做到這一點。 – Alex 2010-03-09 14:36:50
我增加了一個可能更漂亮的選項: – 2010-03-09 22:33:31
@Alex:我意識到我已經晚了一年,但是我實現了一個'BooleanVisibility'附加行爲,您可能會感興趣。你可以在這裏找到這篇文章:http://www.executableintent.com/attached-behaviors-part-1-booleanvisibility/。該系列的第2部分有一個帶有附加行爲框架和'BooleanVisibility'實現的代碼示例。 – 2011-03-23 19:51:19