0

TreeView を変更して、次のように、子アイテムの上下に TreeViewItem 値を表示しようとしています。

foo
|bar
||baz
|biz

になるだろう

foo
|bar
||baz
| baz
|bar
|biz
 biz
foo

現在のコントロール テンプレートのトリミングされた表現を以下に示しますが、このスニペットがコンパイルされるという保証はありません。

<ControlTemplate TargetType="{x:Type TreeViewItem}">
  <Grid>
     <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="19"
                          Width="Auto"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      <Grid.RowDefinitions>
         <RowDefinition Height="Auto"/>
         <RowDefinition/>
         <RowDefinition Height="Auto"/>
      </Grid.RowDefinitions>
      <ToggleButton x:Name="Expander"
                    IsChecked="{Binding Path=IsExpanded,
                    RelativeSource={RelativeSource TemplatedParent}}"
                    ClickMode="Press"/>
      <Border Name="Bd"
              Grid.Column="1"
              Background="{TemplateBinding Background}"
              BorderBrush="{TemplateBinding BorderBrush}"
              BorderThickness="{TemplateBinding BorderThickness}"
              Padding="{TemplateBinding Padding}">
        <ContentPresenter x:Name="PART_Header"
                          ContentSource="Header"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
      </Border>
      <ItemsPresenter x:Name="ItemsHost"
                      Grid.Row="1"
                      Grid.Column="1"
                      Grid.ColumnSpan="2"/>
      <TextBlock Text="Some Binding Goes Here"
                 Grid.Row="2"
                 Grid.Column="1"
                 Grid.ColumnSpan="2"/>
    </Grid>
  </ControlTemplate>

繰り返されるエントリには子がなく、表示値のみになります。ここまでで、ControlTemplate を使用して TreeView ContainerStyle を変更し、ビジュアル ツリーの適切な場所に TextBlock を挿入できました。適切な表示値を取得するには、どのデータ バインディングを使用する必要がありますか?

4

1 に答える 1

1

なぜContentPresenter再び使用しないのですか?

<ContentPresenter ContentSource="Header"
                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                  Grid.Row="2"
                  Grid.Column="1"
                  Grid.ColumnSpan="2"/>
于 2012-10-03T23:45:40.943 に答える