2009-11-14 47 views
1

沒有注入我有一個ItemsControl類中的覆蓋下面的方法:數據模板在ItemContainer

protected override bool IsItemItsOwnContainerOverride(object item) 
{ 
    return item is TilePanelItem; 
} 

protected override DependencyObject GetContainerForItemOverride() 
{ 
    return new TilePanelItem(); 
} 

我公司提供的模板TilePanelItem這是ItemsControl容器:

<ControlTemplate x:Key="tileItemTemplate" TargetType="my:TilePanelItem"> 
    <Grid Width="200" Height="100"> 
     <Border BorderBrush="Black" BorderThickness="2"> 
      <ContentPresenter RenderTransformOrigin=".5,.5" />  
     </Border> 
    </Grid> 
</ControlTemplate> 

而且Style因爲它:

<Style TargetType="my:TilePanelItem"> 
    <Setter Property="Template" Value="{StaticResource tileItemTemplate}" /> 
</Style> 

最後的我ItemsControlDataTemplate實例:

<my:TileItemsControl x:Name="tileControl" ItemsSource="{Binding}" > 
    <my:TileItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel /> 
     </ItemsPanelTemplate> 
    </my:TileItemsControl.ItemsPanel> 
    <my:TileItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Border Background="Blue"> 
       <TextBlock Text="here I am" /> 
      </Border> 
     </DataTemplate> 
    </my:TileItemsControl.ItemTemplate> 
</my:TileItemsControl> 

我定義的DataTemplateItemContainer注射。當我運行該應用程序時,它顯示了我在ItemContainter模板中聲明的邊框,但我沒有看到DataTemplate

我錯過了什麼?

萬分感謝

+0

可您發佈TilePanelItem代碼 – 2009-11-15 07:05:30

回答

0

您需要在把ItemsTemplate成爲ContentPresenter的的ContentTemplate:

<ControlTemplate x:Key="tileItemTemplate" TargetType="my:TilePanelItem"> 
    <Grid Width="200" Height="100"> 
    <Border BorderBrush="Black" BorderThickness="2"> 
     <ContentPresenter RenderTransformOrigin=".5,.5" 
     ContentTemplate="{Binding ItemsTemplate, RelativeSource={RelativeSource FindAncestor,my:TileItemsControl,1}}" /> 
    </Border> 
    </Grid> 
</ControlTemplate>