2012-09-30 113 views
0

我有一個項目WPF。我怎樣才能使用Data Template和sub Data Template就可以了。數據模板和子數據模板

我在我的項目中有下面的類。

public abstract Class X 
public Class A: X 
public Class B: X 
public Class C: X 

和XAML文件中使用下面的代碼:

<DataTemplate DataType="{x:Type A}"> 
... 
</DataTemplate> 

<DataTemplate DataType="{x:Type B}"> 
... 
</DataTemplate> 

<DataTemplate DataType="{x:Type C}"> 
... 
</DataTemplate> 

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate"> 
... 
<!-- use datatemplate of A,B or C --!> 
... 
</DataTemplate> 


<ItemsControl ItemTemplate="{StaticResource xdatatemplate}"/> 

我想用xdatatemplate我的ItemsControl的ItemTemplate中。 ItemsSource項目的類型是A,B或C.而我的數據模板的一部分在類型A,類型B和類型C之間是不同的。我怎樣才能在X DataTemplate上使用A,B和C子DataTemplate?

爲此我可以使用ItemTemplateSelector嗎?

在此先感謝。

回答

1

如果xdatatemplate只能通過它的數據類型選擇子DataTemplate中,那麼你可以做這樣的:

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate"> 
    <Grid> 
    <ContentControl Content="{Binding}" /> 
    <!-- Other content --> 
    <Grid> 
</DataTemplate> 

不過,如果你需要更復雜的子DataTemplate中選擇邏輯,你應該使用ContentTemplateSelector

<local:MyTemplateSelector x:Key="MyTemplateSelector" /> 

<DataTemplate DataType="{x:Type X}" x:Key="xdatatemplate"> 
    <Grid> 
    <ContentControl Content="{Binding}" ContentTemplateSelector="{StaticResource MyTemplateSelector}" /> 
    <!-- Other content --> 
    <Grid> 
</DataTemplate>