Wie erstelle ich in C# Wpf einen Runden ToggleButton?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Gib nicht dem StackPanel eine Hintergrundfarbe, sondern dem Border.

<Border Background="Red" BorderBrush="{TemplateBinding Background}" BorderThickness="1" CornerRadius="20">
  <StackPanel Orientation="Horizontal">
    <!-- ... -->

Twitchers04 
Fragesteller
 02.09.2020, 13:27

Danke, der ToggleButton ist jetzt zumindest schon mal rund, aber er nimmt in der Breite immer noch den maximalen Platzt ein. Weißt du auch wie man dieses Problem lösen kann?

0
Twitchers04 
Fragesteller
 02.09.2020, 13:32
@Twitchers04

Hab es soeben herausgefunden. Ich muss statt DockPanel.Dock="Top" DockPanel.Dock="Left" angeben, damit es am ende so aussieht wie ich ess will

0
regex9  02.09.2020, 13:47
@Twitchers04

Die Breite sollte eigentlich über das Layout dynamisch berechnet werden. Das heißt, dieser Setter:

<Setter Property="Width" Value="Auto"/>

könnte raus und eigentlich auch die Breitenangabe beim Textblock. Mittels eines Grids kann die Breite schließlich bestimmt werden.

Beispiel:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="0.2*"></ColumnDefinition>
    <ColumnDefinition Width="0.8*"></ColumnDefinition>
  </Grid.ColumnDefinitions>

  <ToggleButton DockPanel.Dock="Top" x:Name="favorite_btn" Style="{StaticResource favorite_btn}" Checked="favorite_btn_Checked" Unchecked="favorite_btn_Unchecked" />
</Grid>

Ansonsten würde die Breite direkt auf dem ToggleButton (oder dem Setter in der Style Ressource) gesetzt werden. Beachte, dass du derzeit noch einen Margin gesetzt hast, der die Breite mit beeinflussen kann.

1