Автоматическое применение стилей

92

До сих пор было показано, как создавать именованные стили и ссылаться на них в коде разметки. Однако существует и другой подход. Стиль можно применять автоматически к элементам определенного типа.

Реализуется это довольно просто. Все, что понадобится — это установить свойство TargetType так, чтобы оно указывало на подходящий тип (как описывалось ранее), и не использовать имя ключа. В этом случае WPF устанавливает имя ключа неявно с использованием расширения разметки Type:

х:Кеу="{х:Type Button}"

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

Ниже показан пример с окном, в котором стили кнопок устанавливаются автоматически для получения такого же эффекта, как в предыдущей статье:

<Style TargetType="Button">
       <Setter Property="Control.FontFamily" Value="Calibri"></Setter>
       <Setter Property="Control.FontSize" Value="18"></Setter>
       <Setter Property="Control.FontWeight" Value="Bold"></Setter>
       <Setter Property="Control.Padding" Value="5"></Setter>
       <Setter Property="Control.Margin" Value="5"></Setter>
</Style>

Несмотря на удобство, автоматически применяемые стили усложняют решение. Ниже перечислено несколько возможных причин:

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

Пройди тесты
Лучший чат для C# программистов