У меня есть приложение, которое использует различные стили оформления (в основном цвета, некоторые изображения, и теперь мне также нужны шрифты). Он выбирает «тему» в зависимости от символа компиляции. Так что во время компиляции он будет использовать тот или иной xaml с цветами и т. Д., Которые затем будут именоваться по имени, и все работает нормально. 95% приложения построено на 1 окне wpf.
Я сейчас пытаюсь распространить эту технику на шрифты: каждая тема имеет два шрифта. Одним из них является базовый шрифт (который, как я думал, я бы назначил окну, чтобы все остальные наследовали его), а второй - для некоторых специальных меток здесь и там. Я прочитал несколько SO вопросов по этому поводу, но не могу загрузить ни один из новых шрифтов.
Мой ресурсный словарь выглядит так:
...
<SolidColorBrush x:Key="HiliteError" Color="IndianRed"></SolidColorBrush>
<BitmapImage x:Key="logoHR" UriSource="pack://application:,,,/Resources/logoHR.png"></BitmapImage>
<FontFamily x:Key="FontPrime">Resources/#MagistralLight</FontFamily>
...
иесть мое первое сомнение: какой правильный синтаксис ?? Я пробовал пакет ,,, 'нормальный' путь с .ttf в конце, странный путь выше с #, который я где-то видел, но все они терпят неудачу.
Ближайшее, что я получаю, это когдаЯ определяю стили для окна и текстового блока в app.xaml.
<Style TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="{DynamicResource FontSecd}" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="FontFamily" Value="{DynamicResource FontSecd}" />
</Style>
Затем проводник динамического свойства показывает «DynamicResourceSomthing» в зеленой рамке под fontfamily ... но это все. Таким образом, текст остается в пользовательском интерфейсе SEGOE по умолчанию (нигде явно не определено). Сдается мне, я пропускаю один шаг. Приложение получает динамическое свойство, назначенное правильно, но не применяет его.
Итак, чтобы прояснить это еще раз: мне нужна возможность переключать шрифты во время компиляции, как я уже делал с другими визуальными свойствами. Я использую фиксированные имена ресурсов, которые связаны во время компиляции с разными словарями. Там эти имена связаны с различными ресурсами.