Wiederverwenden ein TreeView der [+] und Zusammenbruch erweitern [-] Tasten in WPF
-
19-09-2019 - |
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.
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: