myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Update StaticResource zur Laufzeit
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Update StaticResource zur Laufzeit

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ByteDevil ByteDevil ist männlich
myCSharp.de-Mitglied

avatar-4066.png


Dabei seit: 02.03.2013
Beiträge: 123
Entwicklungsumgebung: VS 2019 Pro


ByteDevil ist offline

Update StaticResource zur Laufzeit

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

der Titel klingt etwas komisch, ich weiß. Ich habe eine relativ große Anwendung die Verschiedene Themes unterstützt. Es gibt ein ResourceDictionary das sämtliche Styles und Templates beinhaltet. Dieses bindet dann ein weiteres ResourceDictionary in sich ein, wo die Farbcodes hinterlegt sind. Davon gibt es halt für jedes Theme eines. Möchte ich das Theme ändern, erzeuge ich das ResourceDictionary mit den Styles und Templates und packe dann das mit den gewünschten Farbcodes rein und weise es den Window.Resources zu. Möchte ich nun auf Farbwerte von aussen zugreifen, mache ich das mit DynamicResource, weil ich sonst die falsche Farbe kriege nachdem sich das Theme geändert hat.
Das funktioniert auch gut, nur habe ich jetzt ein solches DynamicResource in einem DataTemplate einer ListBox verwendet. Hier filtere ich die Items die angezeigt werden sollen mit einer Textbox in Echtzeit. Das ist unerträglich langsam wenn ich DynamicResource verwende...ersetze ich es durch ein StaticResource, funktioniert es tadellos.

Nun meine Frage: Im Moment wird jedes mal ein lookup nach diesem Farbwert vorgenommen, weil WPF ja davon ausgehen muss, dass sich diese DynamicResource jeder Zeit geändert haben kann. Tatsächlich möchte ich lieber StaticResource nutzen und WPF an einer einzigen Stelle sagen "Ruf mal bitte alle StaticResources neu ab" weil es sich nur ganz selten ändert. Geht das irgendwie? Wenn ich das nicht hinkriege, muss ich wohl oder übel die Farbe in meinem ViewModel für diesen speziellen Fall einmal abrufen und dann binden...ungern.
Neuer Beitrag 18.11.2020 16:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.363
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ohne eine direkte Antwort zu haben:

Hast Du Mal einen BindingProxy ausprobiert?
Der BindingProxy bindet an die Ressource und deine Items an den BindingProxy.

Ich weiß nicht, wie sich das mit dem Aktualisieren verhält, allerdings hättest Du da dann auch einen Anlaufpunkt, wo Du zentral aktualisieren kannst.
Neuer Beitrag 18.11.2020 20:56 Beiträge des Benutzers | zu Buddylist hinzufügen
ByteDevil ByteDevil ist männlich
myCSharp.de-Mitglied

avatar-4066.png


Dabei seit: 02.03.2013
Beiträge: 123
Entwicklungsumgebung: VS 2019 Pro

Themenstarter Thema begonnen von ByteDevil

ByteDevil ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielen Dank für den Tipp. Ich stelle meine Nachforschungen aber nun ein. Wir haben aus anderen Gründen nun von .Net Framework 4.7 auf 4.8 migriert. Hier ist das Problem nicht mehr vorhanden. Das verwenden von DynamicResource hat keinen spürbaren Einfluss mehr. Offenbar hat MS da nochmal was verbessert.
Neuer Beitrag 20.11.2020 11:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.363
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bevor Du jetzt im großen Stil damit arbeitest: Miss lieber nach, ob es wirklich keinen Unterschied macht.
Wäre doof, wenn Ihr in ein paar Monaten/Jahren fest stellt, dass bei zunehmenden Datenmengen die oft genutzte DynamicResource doch einen Unterschied macht.
Neuer Beitrag 20.11.2020 11:43 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 05.12.2020 07:14