Frage

Gibt es eine Möglichkeit der einfachen erweitern [+] und kollabieren [-] Tasten wieder zu verwenden, die neben Knoten in einem WPF TreeView erscheinen? Ich möchte eine ähnliche Grafik in meiner Anwendung an anderer Stelle haben, für den Ausbau und einige Steuerelemente kollabieren.

War es hilfreich?

Lösung

Es ist eigentlich ein ToggleButton, überprüfte ich die TreeView-Vorlage auf der SimpleStyles Projekt und das ist, was ich gefunden habe:

    <ControlTemplate TargetType="ToggleButton">
      <Grid
        Width="15"
        Height="13"
        Background="Transparent">
        <Path x:Name="ExpandPath"
          HorizontalAlignment="Left" 
          VerticalAlignment="Center" 
          Margin="1,1,1,1"
          Fill="{StaticResource GlyphBrush}"
          Data="M 4 0 L 8 4 L 4 8 Z"/>
      </Grid>
      <ControlTemplate.Triggers>
        <Trigger Property="IsChecked"
             Value="True">
          <Setter Property="Data"
              TargetName="ExpandPath"
              Value="M 0 4 L 8 4 L 4 8 Z"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>

Also das ist, was Sie tun müssen, damit es funktioniert:

<Window x:Class="StackOverflowTests.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" x:Name="window1" Height="300" Width="300"
 Loaded="window1_Loaded"
 xmlns:local="clr-namespace:StackOverflowTests">
 <Window.Resources>
  <SolidColorBrush x:Key="GlyphBrush" Color="#444" />
  <ControlTemplate x:Key="toggleButtonTemplate" TargetType="ToggleButton">
   <Grid
            Width="15"
            Height="13"
            Background="Transparent">
    <Path x:Name="ExpandPath"
              HorizontalAlignment="Left" 
              VerticalAlignment="Center" 
              Margin="1,1,1,1"
              Fill="{StaticResource GlyphBrush}"
              Data="M 4 0 L 8 4 L 4 8 Z"/>
   </Grid>
   <ControlTemplate.Triggers>
    <Trigger Property="IsChecked"
                 Value="True">
     <Setter Property="Data"
                  TargetName="ExpandPath"
                  Value="M 0 4 L 8 4 L 4 8 Z"/>
    </Trigger>
   </ControlTemplate.Triggers>
  </ControlTemplate>
  <Style x:Key="toggleButtonStyle" TargetType="ToggleButton">
   <Setter Property="Template" Value="{StaticResource toggleButtonTemplate}" />
  </Style>
 </Window.Resources>
 <StackPanel>
  <ToggleButton x:Name="toggleButton" Height="20" Width="20" Style="{StaticResource toggleButtonStyle}" />
 </StackPanel>
</Window>
  • Nehmen Sie zuerst die Vorlage (toggleButtonTemplate) und legen Sie sie in Ihre Ressourcen
  • Dann machen Sie einen Stil (toggleButtonStyle), der die Vorlage (toggleButtonTemplate) der Steuersätze
  • Sie schließlich sagen Sie Ihrem ToggleButton seinen Stil ist toggleButtonStyle

Wenn Sie nur kopieren und einfügen von ihm sollte gerade aus der Arbeit.

Es ist ein einfacher Prozess, aber es kann Ihnen Kopfschmerzen geben, wenn Sie mithilfe von Vorlagen nicht gewohnt sind, lassen Sie mich wissen, wenn Sie Fragen haben.

Um ein wenig über die Wege Mini-Sprache zu lernen:

Geometrie Mini-Sprache

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top