我有一個ItemsControl的ItemsSource在運行時綁定到一個ObservableCollection組件> ObservableCollection <
。我已經定義了一個類型爲Component的數據模板,它工作正常。WPF Datatemplating一個ItemsControl
現在組件有一個ObservableCollection <
控制>,我想添加另一個ItemsControl在我的組件數據模板中呈現所有的控件。這裏的控件是我自己的與wpf控件無關的自定義對象。
有不同類型的控件,所以我試圖使用ItemTemplateSelector爲每種類型選擇正確的模板。在下面的示例中,我只顯示了其中一個模板「RWString」,我在MyControlTemplateSelector中使用FindResource重寫了SelectTemplate。但SelectTemplate永遠不會被調用(使用斷點來檢查)。我的xaml有什麼問題嗎?
<ItemsControl.Resources>
<src:MyControlTemplateSelector x:Key="XSelector" />
<DataTemplate DataType="{x:Type src:Component}" >
<Expander Visibility="{Binding Path=Show}">
<ItemsControl ItemsSource="{Binding Path=Contrls}"
ItemTemplateSelector="{StaticResource XSelector}">
<ItemsControl.Resources>
<DataTemplate x:Key="RWstring" >
<TextBlock Text="{Binding Path=Label}"/>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate><WrapPanel /></ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Expander>
</DataTemplate>
</ItemsControl.Resources>
更新: Contrls是不是一個錯字,它只是我使用一個愚蠢的命名系統。 Contrls是ObservableCollection類型的Component的一個屬性。此外我之所以使用ItemsTemplateSelector的原因是,ObservableCollection控制>包含通用類型的對象,如控制<
INT>控制<
字符串>等等所有派生自控制和顯然你不能創建數據模型引用泛型類型。
更新3:刪除更新2,因爲它是無關的。通過將StaticResource更改爲DynamicResource,我得到了ItemTemplateSelector。但我不知道爲什麼這個工程...
謝謝你是這個問題。我在運行時創建的itemscontrol內創建它 – Sharun 2009-01-05 13:17:39