Wie erstelle ich in C# Wpf einen Runden ToggleButton?

Ich möchte einen ToggleButten erstellen, der einen runden Rand hat und seine Breite automatisch anpasst.

Mein Code bisher:

Style:

<Style TargetType="ToggleButton" x:Key="favorite_btn">
            <Setter Property="Height" Value="30"/>
            <Setter Property="Width" Value="Auto"/>
            <Setter Property="Background" Value="Red"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="Margin" Value="60,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border BorderBrush="{TemplateBinding Background}" BorderThickness="1" CornerRadius="20">
                            <StackPanel Orientation="Horizontal" Background="Red">
                                <Image Height="20" Width="20" Source="{Binding Path=Image}" VerticalAlignment="Center" Margin="5,0,0,0"/>
                                <TextBlock Text="{Binding Path=Text}" Foreground="White" FontSize="20" Margin="5,0" VerticalAlignment="Center" Width="Auto"/>
                            </StackPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

und

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

Jedoch bekomme ich am Ende folgendes heraus:

Herauskommen soll aber:

Was mach ich falsch?

Bild zum Beitrag
Computer, Schule, programmieren, C Sharp, Windows Presentation Foundation
C# Programm Zweidimensionales Array?

Moin,

sitze schon ne Weile an einem Programm, das einen Integer (nennen wir ihn Zahl ) vom Benutzer einlesen soll. Ausgehend von Zahl soll dann wie folgt ein zweidimensionales Array erstellt werden:

  • das Array ist Zahl x Zahl groß
  • das Element oben links im Array (also [0, 0] ) hat den Wert Zahl x Zahl
  • jedes weitere Element rechts daneben hat jeweils -1 weniger
  • anders beschrieben: es wird von links nach rechts abwärts gezählt beginnend vom Wert Zahl x Zahl

Da ich mir den Lösungsweg Stück für Stück erarbeiten möchte, könnt Ihr auf die komplette Lösung/ bzw. Erklärung verzichten.

Ich weiß, dass man Zeilen und Spalten bei dieser Aufgabe beide mit for-Schleifen erstellen kann, doch der Einfachheit halber möchte ich erst verstehen, wie ich mit den Spalten vorgehen muss.

Ohne for-Schleife bekomme ich die erste Spalte problemlos erstellt und das sieht dann so aus:

oder:

Console.WriteLine("Geben Sie eine Zahl ein, bei der nach dem"+ "Schema Zahl*Zahl ein Array erstellet werden soll:");
            string eingabe = Console.ReadLine();
            int intEingabe = Convert.ToInt32(eingabe);
            Console.WriteLine("\n");
            int[,] eingabeArray = new int[intEingabe,intEingabe];
            int eingabeArrayLänge = intEingabe * intEingabe;

            //Erste Spalte:
            eingabeArray[0, 0] = eingabeArrayLänge;
            eingabeArray[1, 0] = eingabeArray[0, 0] - 1;
            eingabeArray[2, 0] = eingabeArray[1, 0] - 1;
            Console.WriteLine(eingabeArray[0, 0] + "\n" + eingabeArray[1, 0] + "\n" + eingabeArray[2, 0]);

Bis dahin kein Problem doch wie schaffe ich es nun, dass ich die erste Spalte nicht "von Hand" ausfüllen muss? Das muss doch irgendwie mit ner for-Schleife zu machen sein?

Doch ich komme da nicht weiter - egal wie ich es drehe und wende.. Wäre nett wenn jemand mir die passende for-Schleife zeigen könnte.

LG

Bild zum Beitrag
Computer, Schule, Programm, programmieren, C Sharp, Informatik, Programmiersprache, For-Schleife, Ausbildung und Studium

Meistgelesene Beiträge zum Thema C Sharp