Ich möchte zuerst sagen, dass ich Bining sehr neu bin. Ich habe schon einige Dinge in WPF getan, aber ich habe nie Binding verwendet, weil das Konzept zu schwer ist verstehe für mich recht von der Fledermaus. Auch das, was ich jetzt mache, konnte ich aus einem Tutorial retten, das ich nicht ganz verstanden habe.Statische Bindung wird nicht aktualisiert, wenn sich die Ressource ändert
In meiner Anwendung habe ich eine statische Klasse mit statischen Eigenschaften und es gibt eine statische Methode, die diese statischen Eigenschaften ändert.
Beispiel:
public static class AppStyle
{
public static SolidColorBrush property = Brushes.Red;
public static void ChangeTheme()
{
property = Brushes.Blue;
}
}
Im Inneren des XAML habe ich ein Steuerelement, das es ist Hintergrund dieser Wert binded hat. Ich habe sogar den Namensraum richtig deklariert.
...
xmlns:style="clr-namespace:CorrectNamespace;assembly=RightAssembly"
...
<TextBox x:Name="TXT_PN"
Background="{Binding Source={x:Static style:AppStyle.property}}"
TextChanged="TXT_PN_TextChanged"
Text="Text"/>
Wenn die Anwendung geladen wird jedoch die richtige Einstellung (rote Farbe) laden, wenn die Dinge ändern und ChangeTheme() aufgerufen wird, wird die statische Klasse den neuen Wert bekommen, aber der Hintergrund der Textbox wird sich nicht ändern. Was mache ich hier falsch? Wie ich schon sagte, ich bin sehr neu und ich würde die Lösung in Laiensprache schätzen.
Vielen Dank!
Vielen Dank für die eingehende Antwort. Lass mich einfach hinzufügen, dass ich {get; set;} für meine Eigenschaften verwende, ich habe es hier in meiner Frage einfach verpasst. Ich habe noch eine Frage zu Ihrer Antwort. meine Klasse ist in einer DLL, die in einem anderen Projekt ist, schreibe ich den ersten Codeblock dort oder in .cs der XAML, in der ich arbeite? – DethoRhyne
Es ist alles in Klasse AppStyle, siehe meine Bearbeitung. – Clemens
Vielen Dank. Ich habe Ihren Code angewendet und alles funktioniert jetzt. Ich werde mich daran erinnern. Nochmals vielen Dank! :) – DethoRhyne