Ich suche einen IValueConverter mit einem Wert, den ich von den Ressourcen einer Anwendung bekomme. Ich habe festgestellt, dass vor ein paar Jahren eine ähnliche Frage gestellt wurde: How to bind to a StaticResource with a Converter?.IValueConverter zum Konvertieren einer von StaticResource referenzierten Ressource
Das Aktualisieren des Source-Attributs zu einem Objekt in den Ressourcen funktionierte jedoch nicht für mich. Mein besonderer Fall:
<TextBlock Text="SampleText" Foreground="{Binding Source={StaticResource AppThemeColor}, Converter={StaticResource ThemeColorToBrushConverter}, ConverterParameter={StaticResource ApplicationForegroundThemeBrush}, Mode=OneWay}" />
Die AppThemeColor definiert und dynamisch in der Code-behind in einem frühen Stadium des App-Starts gesetzt. Die Logik im Konverter sagt lediglich, dass die bereitgestellte Farbe verwendet wird, es sei denn, die App befindet sich im Hochkontrast-Modus. In diesem Fall wird der im ConverterParameter angegebene Pinsel verwendet.
Kennt jemand irgendwelche Fallstricke, die ich hier laufen könnte? Es gibt keine Kompilierungs- oder Laufzeitfehler. Der Text erscheint einfach nicht und der Konvertierer des Konverters scheint nicht aufgerufen zu werden.
EDIT: Einige Fragen, wie ich die AppThemeColor dynamisch festlegen. Ich habe einfach die folgenden Einzeiler hier im App.xaml.cs der OnActivatedAsync:
Application.Current.Resources[AppThemeColorResourceKey] = (themeExists) ? branding.ThemeColor : blueThemeColor;
uns, wo Sie die 'AppThemeColor' im Code festgelegt? –
Wenn es dynamisch eingestellt ist, haben Sie versucht, DynamicResource anstelle von StaticResource zu verwenden? –
DynamicResource ist keine Option für mich in UWP-Apps (vielleicht hätte ich das am Anfang geklärt), aber das sollte eigentlich nicht das Problem sein. Ich werde die Frage aktualisieren, die ich mit dem Einzeiler gestellt habe, wo ich die AppThemeColor eingestellt habe. – evve