Я ищу использовать IValueConverter со значением, которое я получаю из ресурсов приложения. Я заметил, что аналогичный вопрос был задан несколько лет назад здесь: How to bind to a StaticResource with a Converter?.IValueConverter для преобразования ресурса, на который ссылается StaticResource
Однако обновление атрибута Source объекту в ресурсах не помогло мне. Мой частный случай:
<TextBlock Text="SampleText" Foreground="{Binding Source={StaticResource AppThemeColor}, Converter={StaticResource ThemeColorToBrushConverter}, ConverterParameter={StaticResource ApplicationForegroundThemeBrush}, Mode=OneWay}" />
AppThemeColor определяется и устанавливается динамически в коде позади на ранней стадии запуска приложения. Логика в конвертере просто говорит использовать цвет, если приложение не находится в режиме высокой контрастности, и в этом случае он использует кисть, поставляемую в ConverterParameter.
Кто-нибудь знает о любых подводных камнях, с которыми я мог бы столкнуться здесь? Ошибок компиляции или времени выполнения нет. Текст просто не отображается, и конвертер конвертера, похоже, не вызван.
EDIT: Некоторые спрашивали, как я динамически устанавливаю AppThemeColor. Я просто добавил следующее Однострочник здесь в OnActivatedAsync App.xaml.cs'S:
Application.Current.Resources[AppThemeColorResourceKey] = (themeExists) ? branding.ThemeColor : blueThemeColor;
показать нам, где вы установите 'AppThemeColor' в коде? –
Если он настроен динамически, попробовали ли вы использовать DynamicResource вместо StaticResource? –
DynamicResource не является вариантом для меня в приложениях UWP (возможно, должен был уточнить, что в начале), хотя это действительно не должно быть проблемой. Я обновлю вопрос, заданный с помощью однострочного интерфейса, где я установил AppThemeColor. – evve