Как создать раздел нижнего колонтитула на шаблоне иерархических данных - PullRequest
1 голос
/ 03 апреля 2011

Я пытаюсь реализовать древовидную структуру с нижним колонтитулом в нижней части каждой иерархии, чтобы пользователь мог легко добавлять элементы внизу.

Что-то вроде

    <TreeView>
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="local:MyNestedType"
                                      ItemsSource="{Binding Items}">
                <StackPanel>
                   <Label Content="{Binding NodeName}" /> 
                    <!--Nested Items here-->
                    <Button Content="Add New Item" />
                </StackPanel>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>

Какмогу ли я достичь этого.

1 Ответ

1 голос
/ 03 апреля 2011

Ответ не красивый, но выполнимый.

Вам придется переопределить ItemContainerStyle из TreeView и определить шаблон элемента управления.

http://msdn.microsoft.com/en-us/library/ms788727.aspx

В этом примере вы увидите, что шаблон управления TreeViewItem имеет некоторый XAML, подобный этому:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition MinWidth="19" Width="Auto"/>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition/>
  </Grid.RowDefinitions>
  <ToggleButton x:Name="Expander"
          Style="{StaticResource ExpandCollapseToggleStyle}"
          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"/>
</Grid> 

Этот XAML определяет способ отображения дочерних элементов относительно родительского элемента - под ItemsPresenter вы можете вставить нижний колонтитул.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...