我有一個TreeView
綁定到列表Tileset
。 Tileset
包含TileGroup
,TileGroup
包含Tile
和TileRun
實例。無論Tile
和TileRun
實施ITile
,但終究會有更多類型的實施ITile
WPF中的自動模板選擇無法與接口
我有以下XAML:
<TreeView
Grid.Row="0"
Grid.Column="0"
BorderThickness="0"
ItemsSource="{Binding Path=Tilesets}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Tileset}" ItemsSource="{Binding Path=TileGroups}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:TileGroup}" ItemsSource="{Binding Path=Tiles}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type tiles:ITile}">
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</TreeView.Resources>
</TreeView>
Tileset
和TileGroup
選擇正確的DataTemplate
但ITile
不,沒有選擇模板,樹只顯示數據類型。
但是,如果我兩個Tile
和TileRun
添加DataTemplate
明確,一切正常great.I不想,雖然做的,因爲最終會被更多的類實現ITile
。
我知道我可以使用DataTemplateSelector
來處理這個問題,但如果可能的話,我想要一個純粹的XAML解決方案。
我在這裏做錯了什麼,或者WPF不支持這種基於接口的自動模板選擇?
的可能的複製[WPF數據綁定到接口,而不是實際的對象 - 鑄造可能?](https://stackoverflow.com/questions/327984/wpf-databinding-to-interface-and-not-actual-object-casting-possible) –