2016-12-26 13 views
0

DataGridTemplateColumnHeaderedItemsControlを表示したいと思います。ただし、次のコードはヘッダーのみを表示しますが、内容は表示しません。どこで私は間違えましたか?コンテンツを表示していないDatagridcellのHeaderedItemsControlを使用

<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <HeaderedItemsControl ItemsSource="{Binding Days[0].Employee}"> 
      <HeaderedItemsControl.Template> 
       <ControlTemplate TargetType="HeaderedItemsControl"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="1*"/> 
          <ColumnDefinition Width="30"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Grid.Column="0" Text="Employee"/> 
         <Button Grid.Column="1"></Button> 
        </Grid> 
       </ControlTemplate> 
      </HeaderedItemsControl.Template> 
      <HeaderedItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"></StackPanel> 
       </ItemsPanelTemplate> 
      </HeaderedItemsControl.ItemsPanel> 
      <HeaderedItemsControl.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </HeaderedItemsControl.ItemTemplate> 
     </HeaderedItemsControl> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 

答えて

1

あなたのテンプレートにItemsPresenterを含めるのを忘れました。したがって、あなたのコントロールにはヘッダのみがあります。それを元に戻すだけで、このトリックが行われます:

<ControlTemplate TargetType="HeaderedItemsControl"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*" /> 
      <ColumnDefinition Width="30" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="22" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <TextBlock Grid.Column="0" Text="Employee" /> 
     <Button Grid.Column="1" /> 

     <ItemsPresenter Grid.Row="1" Grid.ColumnSpan="2" /> 
    </Grid> 
</ControlTemplate> 

また、Days[0].Employeeはコレクションですか?それは確かに奇妙に見えます。


ボーナスとして、実際にHeaderedItemsTemplateを使用する必要はありません。テンプレートは基本的なコントロールで簡単に作成できます。

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="24" /> 
        <RowDefinition /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition /> 
        <ColumnDefinition Width="30" /> 
       </Grid.ColumnDefinitions> 

       <TextBlock Text="Employee" /> 
       <Button Grid.Column="1" /> 

       <ItemsControl ItemsSource="{Binding Days[0].Employee}" Grid.Row="1" Grid.ColumnSpan="2"> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel Orientation="Horizontal" /> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Name}" /> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </Grid> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 
+0

ワウ!ありがとうございました。ボーナスはとても素敵です! Btw:はい、Days [0] .Employeeはコレクションです。私は通常、オブジェクト/コレクション名を翻訳しますが、少し間違いを翻訳しました;) –

+0

@ Mister832、うれしかったです。乾杯! – icebat

関連する問題