none
TreeView mit HorizontalContentAlignmen

    Frage

  • Hallo!

    Bei einem TreeView (mit einem HierarchicalDataTemplate) habe ich die HorizontalContentAlignmen-Eigenschaft auf Stretch gesetzt:

            <TreeView HorizontalContentAlignment="Stretch" >
                <TreeView.Resources>
                    <HierarchicalDataTemplate DataType="{x:Type local:AUFTRAG}" ItemsSource="{Binding liAUFTRAG_POSITION}">
                        <Border BorderThickness="3" BorderBrush="{Binding AUF_STATUS, Converter={StaticResource WodisAuftragStatusConv}}" CornerRadius="5" Padding="3">
    

    Trotzdem werden mir die Einträge linksbündig angeordnet:

    Ich möchte die Einträge aber gleich breit (aber abhängig vom breitesten Eintrag) darstellen. Wie kann ich das denn bewirken?

    Donnerstag, 6. Dezember 2018 11:37

Antworten

  • Hi,
    ändere mal den Style des TreeViewItems:

      <Window.Resources>
        <Style TargetType="TreeViewItem">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="TreeViewItem">
                <StackPanel>
                  <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="ExpansionStates">
                      <VisualState x:Name="Expanded">
                        <Storyboard>
                          <ObjectAnimationUsingKeyFrames
                                        Storyboard.TargetProperty="(UIElement.Visibility)"
                                        Storyboard.TargetName="ItemsHost">
                            <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="{x:Static Visibility.Visible}" />
                          </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                      </VisualState>
                      <VisualState x:Name="Collapsed" />
                    </VisualStateGroup>
                  </VisualStateManager.VisualStateGroups>
                  <ContentPresenter ContentSource="Header" />
                  <ItemsPresenter Name="ItemsHost" Visibility="Collapsed" />
                </StackPanel>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Window.Resources>


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort vorgeschlagen Peter Fleischer Donnerstag, 6. Dezember 2018 19:01
    • Als Antwort markiert perlfred Freitag, 7. Dezember 2018 07:50
    Donnerstag, 6. Dezember 2018 19:01

Alle Antworten

  • Hi,
    ändere mal den Style des TreeViewItems:

      <Window.Resources>
        <Style TargetType="TreeViewItem">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="TreeViewItem">
                <StackPanel>
                  <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="ExpansionStates">
                      <VisualState x:Name="Expanded">
                        <Storyboard>
                          <ObjectAnimationUsingKeyFrames
                                        Storyboard.TargetProperty="(UIElement.Visibility)"
                                        Storyboard.TargetName="ItemsHost">
                            <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="{x:Static Visibility.Visible}" />
                          </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                      </VisualState>
                      <VisualState x:Name="Collapsed" />
                    </VisualStateGroup>
                  </VisualStateManager.VisualStateGroups>
                  <ContentPresenter ContentSource="Header" />
                  <ItemsPresenter Name="ItemsHost" Visibility="Collapsed" />
                </StackPanel>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Window.Resources>


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort vorgeschlagen Peter Fleischer Donnerstag, 6. Dezember 2018 19:01
    • Als Antwort markiert perlfred Freitag, 7. Dezember 2018 07:50
    Donnerstag, 6. Dezember 2018 19:01
  • Hallo Peter!

    Das ist ja wieder einmal grandios!!!

    Wie/wodurch hier der Expander auf die volle Breite gesetzt wird, kann ich trotz dem vollständigen Style nicht nachvollziehen, aber es funktioniert!!!

    Die Botschaft hör ich wohl, allein mir fehlt der Glaube.

    Johann Wolfgang von Goethe

    Vielen Dank!!!!

    Fred.


    • Bearbeitet perlfred Freitag, 7. Dezember 2018 07:58
    Freitag, 7. Dezember 2018 07:57
  • Hi Fred,
    der Header wird im Standard-Style in einem Grid mit einer Breite="*" dargestellt:

                <Grid>
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" MinWidth="19" />
                    <ColumnDefinition Width="Auto" />  <--- hier
    Dadurch passt sich der Rand immer an die eingebettete Größe (Textlänge) an. In dem von mir gezeigten Style wird die gesamte Breite genommen.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Samstag, 8. Dezember 2018 09:06