ist es möglich, dass ich eine statische Resource, z.B. Color, als Wert für einen Setter innerhalb eines Styles verwende? Ich habe es bereits auf dem "herkömmlichen" Weg versucht, aber ohne Erfolg. Im Editor konnte ich das Ergebnis kurz sehen und es sah gut aus. Nach ein paar Sekunden bekomme ich eine Fehlermeldung, dass die statische Ressource eine Exception ausgelöst hat, weil sie nicht gefunden werden kann.
So verwende ich den Style quasi in der Resource Dictionary:
Ups, die Anführungszeichen habe ich beim Abtippen vergessen. Und ich hatte das falsche Template gepostet..
Das mit dem SolidColorBrush war eine gute Idee, jetzt habe ich wieder IntelliSense wenn es um die StaticResource Auswahl geht.
Was allerdings noch nicht so recht funktioniert ist das Einbinden des Styles per x:Key.
Exception: Die Ressource mit dem Namen "CloseableBtn" kann nicht gefunden werden. Bei Ressourcennamen wird die Groß- und Kleinschreibung berücksichtigt.
Was mich ebenfalls etwas stört, ist, dass die Styles nicht mehr im Designer angwendet werden. Somit sehen alle Controls gleich aus.. wenn ich aber den Style auskommentiere, dann sind in der laufenden Anwendung die Styles angewandt worden. Entferne ich dann während der Laufzeit die Kommentare im .xaml, dann werden auch die Styles mit dem x:Key angezeigt. Beende ich die App und starte sie neu, bekomme ich oben genannte Fehlermeldung.
Zu beachten ist dabei auch, dass ich NET Core 3 verwende.. könnte sich wohl auch um einen Bug handeln, oder? Müsste ich mal mit dem Framework gegen testen, oder fällt euch dazu was ein?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Davaaron am .
Angesichts deines bisher geposteten Codes würde ich erstmal nicht von einem Fehler bei Microsoft ausgehen. Aber mit "wollte irgendwie nicht" können wir halt auch nicht viel anfangen, um dir weiterzuhelfen.
Es gab dazu keine Fehlermeldung und nichts, aber die Styles wurden eben nicht geladen.
Mein Problem ist aber nun nicht, dass das Resource Dictionary nicht geladen wird. Das Problem ist eher, dass der Key (CloseableBtn) aus dem Resource Dictionary nicht gefunden wird. Und da müsste es doch eigentlich egal sein, ob ich das Resource Dictionary nun per XAML oder Code-behind lade, oder nicht?
Ne, das ist es leider auch nicht. Hab auch den Namen per C&P hinter "StaticResource" eingefügt. Hab aber aus "Closeable" mal "Closable" gemacht, der Genauigkeit wegen.
Aber ich hab es nun... in der App.xaml hatte ich all meine DataTemplates (die Styles in der ButtonStyle.xaml) und hatte das ResourceDictionary per Code aber erst im MainWindowViewModel geladen. Daher konnte das xaml tatsächlich nicht gefunden werden..
Da ich kein AppViewModel haben will, probierte ich nochmal die XAML-Variante aus und die Lösung ist denkbar einfach: Man kann kein ResourceDictionary laden und gleichzeitig noch DataTemplates innerhalb des Resources-Tag deklarieren. Also sind die DataTemplates jetzt ebenfalls in die XAML gewandert und zwar ganz nach unten, so dass nun auch die per Key definierten Styles zur Verfügung stehen. In der App.xaml lade ich die Styles dann so:
Stimmt, so geht's. Hatte vorher kein MergedDictionaries benutzt sondern einfach ein ResourceDictionary und auf der gleichen Ebene die DataTemplates geladen. Da kam dann auch die Fehlermeldung "The property Resources can only be set once.".
Man kann kein ResourceDictionary laden und gleichzeitig noch DataTemplates innerhalb des Resources-Tag deklarieren.
Mir war schlichtweg nicht klar und es hat etwas gedauert um zu begreifen, dass "Application.Resources" neben "ResourceDictionary" keine weiteren Subelemente haben darf, wenn man sich dazu entscheidet, eben ein ResourceDictionary zu verwenden. Man kann aber, wie du schon gezeigt hast, beides kombinieren, wenn man ein MergedDictionary verwendet.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Davaaron am .