WedX - журнал о программировании и компьютерных науках

Применение FontFamily ко всем элементам управления в Silverlight 4 Beta

Я хотел бы дать каждому Control определенные FontFamily и FontWeight в Silverlight 4.0. Я знаю, что теперь стили могут применяться ко всем элементам управления определенного типа, поэтому я попробовал следующее:

<Style TargetType="Control">
    <Setter Property="FontFamily" Value="Arial" />
    <Setter Property="FontWeight" Value="Bold" />
</Style>

К сожалению, похоже, это не работает. Однако я могу сделать это для типов, производных от Control. Например, установка TargetType на Button применяет эти значения к каждому Button в моем приложении.

Тогда почему я не могу сделать это для базового класса Control?


Ответы:


1

Стиль элемента управления, привязанный к системе типов, может немного ввести в заблуждение. На самом деле это основано на значении свойства control DefaultStyleKey. В случае Button значение равно typeof(Button), а для TextBoxtypeof(Textbox).

Стиль по умолчанию будет применен к элементу управления, если значение TargetType равно значению элемента управления DefaultStyleKey. Нет исследования того, является ли Type в DefaultStyleKey производным от TargetType.

Свойства, связанные со шрифтом, являются особым случаем, поскольку большинство элементов управления наследуют значения свойств шрифта из содержащего контекста. Следовательно, вы можете эффективно добиться того же результата, указав FontFamily и FontWeight в элементе UserControl.

Изменить

Из комментария ОП: -

Я надеялся, что смогу установить его в одном месте, и каждый пользовательский элемент управления во всем приложении будет соответствовать этому стилю.

Самое близкое, что вы можете сделать, это поместить ключевой стиль в ресурсы приложения и обеспечить привязку всех пользовательских элементов управления к этому стилю. Конечно, это по-прежнему требует некоторого сотрудничества для каждого пользовательского элемента управления, но, по крайней мере, выбор шрифта остается в одном месте.

Например, в app.xaml: -

<Style x:Key="Common" TargetType="UserControl">
    <Setter Property="FontFamily" Value="Arial" />
    <Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="Blue" />

Затем в каждом пользовательском контроле: -

<UserControl ...namespace stuff here...
   Style="{StaticResource Common}">
  <!-- ... content here ... -->
24.11.2009
  • Спасибо, это имеет смысл. Хотя я надеялся, что смогу установить его в одном месте, и каждый пользовательский элемент управления во всем приложении будет соответствовать этому стилю. Я думаю, я мог бы создать собственный UserControl, на котором будут основаны другие. 24.11.2009

  • 2

    Я делаю это, указав FontFamily в своем корневом визуальном элементе. Все дочерние элементы управления без явного набора FontFamily получают FontFamily из корневого визуального элемента.

    Только ChildWindow нуждается в дополнительной настройке FontFamily, потому что он размещен в корневом визуальном элементе «über» (как всплывающее окно).

    01.12.2010
  • с каким xaml вы делаете настройку? корневой визуал не принимает стили. 02.12.2010

  • 3

    Это поможет:

    this.RootVisual = New MainPage();
    (MainPage)this.RootVisual.FontFamily 
      = New System.Windows.Media.FontFamily(
        "/SLApplication;component/Fonts/segoeui.ttf#Segoe UI");
    
    24.06.2011
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]