Laden...

Wie erstelle ich einen runden WPF Button in C#?

Erstellt von FrankenDerStein vor 4 Jahren Letzter Beitrag vor 4 Jahren 893 Views
FrankenDerStein Themenstarter:in
72 Beiträge seit 2015
vor 4 Jahren
Wie erstelle ich einen runden WPF Button in C#?

Hallo Kollegen,

Ich habe mal eine Frage. ich will über C# einen runden Button mit einem Button X in der Mitte erstellen.
Mein versuch dies zu erreichen sah so aus:


            Button close = new Button();
            close.Background = new SolidColorBrush(Colors.Transparent);
            close.VerticalContentAlignment = VerticalAlignment.Center;
            close.HorizontalContentAlignment = HorizontalAlignment.Center;
            close.Content = "x";
            close.Click += delegate (object sender, RoutedEventArgs e)
            {
                tabControl.Items.Remove(tab);
            };
            Style buttonStyle = new Style(typeof(Button));
            buttonStyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.DarkGray)));
            buttonStyle.Setters.Add(new Setter(ForegroundProperty, new SolidColorBrush(Colors.Black)));
            buttonStyle.Setters.Add(new Setter(FontSizeProperty, new FontSizeConverter().ConvertFromString("10")));
            ControlTemplate ControlTemp = new ControlTemplate(typeof(Button));
            FrameworkElementFactory FEF = new FrameworkElementFactory(typeof(Border));
            FEF.SetValue(Border.CornerRadiusProperty, new CornerRadius(5));
            ControlTemp.VisualTree = FEF;
            buttonStyle.Setters.Add(new Setter(TemplateProperty, ControlTemp));
            close.Style = buttonStyle;

Leider weis ich nicht warum es nicht Funktioniert.

Falls die Frage kommt warum ich es nicht in XAML mache. Dieser Button wird mit anderen Komponenten Dynamisch erstellt und hinzugefügt.

Ich hoffe jemand hat eine Idee warum.

Mit freundlichen Grüßen FrankenDerStein.

5.658 Beiträge seit 2006
vor 4 Jahren

Hier gibt es ein Beispiel: [Artikel] MVVM und DataBinding, Abschnitt "5. Templates"

Das ist jetzt aber in XAML, wie es unter WPF üblich ist. Deine Begründung ergibt für mich keinen Sinn, denn XAML schließt überhaupt nicht aus, daß man die erstellten Elemente dynamisch erzeugen kann.

So wird dir jedenfalls kaum jemand weiterhelfen können. Da mußt du dir das XAML halt in C# übersetzen. Welchen Vorteil das allerdings haben soll, verstehe ich nicht.

Weeks of programming can save you hours of planning