Hallo Habe gerade mit WPF begonnen und habe das folgende Problem .Es ist zwar klar wie ich einem Button eine Hintergrundfarbe zuweise,aber wie bekomme ich diese Hintergrundfarbe voneinem beliebigeb Button btn also : Color farbe = Colors.Red; Button btn = new Button(); btn.Background = new SolidColorBrush(farbe); dies funktioniert natürlich prächtig Jetzt kenne ich natürlich die Hintergrundfarbe.Wollte ich sie aber aus welchen Gründen aus den Eigenschaften des Button auslesen und das eErgebniss einer Variablen zuweisen so stehe ich wie der Ochse vorm Tor. Wer weiss was vielen Dank im Voraus Manna
Hallo, das ist nicht wirklich WPF, wenn Du wirklich WPF benutzt, dann ist UI und Logic voneinander getrennt und du änderst das aussehen deines Buttons über Styles. https://msdn.microsoft.com/de-de/library/bb613545%28v=vs.110%29.aspx Wenn Du etwas ausholst und erklärst, wieso Du die Farbe benötigst, dann könnte man Dir besser helfen.
Hallo Dirk vielen Dank für die prompte Antwort. WPF ermöglicht es Code und Design strikt zu trennen.aber erlaubt genauso Steuerelemente 'on the fly' zu erzeugen und mit Eigenschaften zu versehen. Apodiktisch zu verlangen diese Trennung von Code und Design stets konsequent zu verfolgen,würde meiner Meinung nach creatives,pfiffiges Programmieren erheblich einschränken,abgesehen davon,dass es auch garnicht möglich ist. Ein kleines Beispiel wie es erfogreich funktioniert. Ich habe über den Designer im MainWindow ein Canvas namens 'meinCanvas' plaziert. Die MainWindow.xaml.cs sieht wie folgt aus public MainWindow() { Button btn = new Button(); btn.Width = 150; btn.Height = 150; btn.Name = "Dirk"; // der Button ist unter dem Namen 'Dirk' ansprechbar"); // jetzt verpasse ich dem Button ebenso problemlos eine Hintergrundfarbe btn.Background = new SolidColorBrush(Colors.LightYellow); // den Namen des Buttons kann ich natürlich leicht ermitteln und auch ausgeben string Vorname = btn.Name; MessageBox.Show(Vorname); // meine Frage ist 'wie kann ich analog die Hintergrundfarbe auslesen' InitializeComponent(); meinCanvas.Children.Add(btn); btn.Content = "welche Farbe habe ich ??"; }; nochmals vielen Dank Manna
Manna schrieb: > würde meiner Meinung nach creatives,pfiffiges > Programmieren erheblich einschränken So kann man das natürlich auch ausdrücken. Architektur und Statik schränkt einem beim Hausbau auch nur unnötig in seinen kreativen und pfiffigen Ideen ein.
1 | var buttonColor = (btn.Background as SolidColorBrush)?.Color; |
2 | if(buttonColor.HasValue) |
3 | { |
4 | // sedezimal |
5 | MessageBox.Show(buttonColor.ToString()); |
6 | } |
> aber erlaubt genauso Steuerelemente 'on the fly' zu erzeugen und mit > Eigenschaften zu versehen. Zum ersten Herumprobieren und Kennenlernen der Eigenschaften etc. ist das schon in Ordnung so. Ich würde aber zumindest erst InitializeComponent ausführen, bevor ich herumfummele (und den "Experimentalcode" in Button-Handler setzen, nicht in den Konstruktor).
Hallo und Dank an alle Teilnehmer dieser kleinen Debatte ! Der von mir beispielhaft angegebene Code ist nur schnell zur Verdeutlichung des Problems geschrieben worden und das Auslesen Der Hintergrundfarbe sollte eigentlich in einer ButtonHandler-Funktion erfolgen. Doch noch einmal zum Grundsätzlichen. Ich wollte WPF lernen,indem ich ein Soduku-Spiel programmiere. Zuerst wollte ich das 9x9 Quadrat der Buttons im Designer zusammenbauen,bis ich mir sagte,dass dies wesentlich einfacher über zwei verschachtelte for-Schleifen im Code zu bewerkstelligen wäre.Dies hat sich dann auch bestens bewährt. Das Grundgerüst für das Spiel also Spielfeld und diverse andere Steuerelemente habe ich allerdings 'konventionel! mit dem Designer erzeugt.Ausschliessliches Benutzen des Designers mit Xaml würde ich für dieses konkrete Problem als wenig vernünftig ansehen. Da ich aber wie gesagt totaler Anfänger vor Allem bei WPF bin,möchte ich nicht völlig ausschließen,eine elegantere Lösung nicht zu kennen oder aber sie übersehen zu haben. Gruss Manna
Was ich noch vergessen hatte: Die Lösung von 'Kippenhannes' ist genau das was ich wollte. Prima !!! dafür vielen Dank Manna
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.