Чи можу я вказати стиль, який застосовується до всіх елементів? я намагався
<Style TargetType="Control">
<Setter Property="Margin" Value="0,5" />
</Style>
Але це нічого не зробило
Відповіді:
Style
Ви створили тільки орієнтацію , Control
а не елементи , які є наслідком Control
. Коли ви не встановлюєте значення, x:Key
воно неявно встановлюється як TargetType
, так у вашому випадку x:Key="{x:Type Control}"
.
Існує немає прямого способу вказати , Style
що цілі всіх елементів , які випливають з TargetType
з Style
. У вас є інші варіанти.
Якщо у вас є наступне Style
<Style x:Key="ControlBaseStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="50" />
</Style>
Buttons
Наприклад, ви можете націлити все
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource ControlBaseStyle}"/>
або використовувати стиль безпосередньо на будь-якому елементі, наприклад Button
<Button Style="{StaticResource ControlBaseStyle}" ...>
Як відповів Фредрік Хедблад, ви можете впливати на всі елементи, які успадкували від контролю.
Але ви не можете застосувати стиль для текстового блоку та кнопки з однаковим стилем, наприклад.
для цього:
<Style x:Key="DefaultStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="Control.Margin" Value="50"/>
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource DefaultStyle}"/>
<Style TargetType="Button" BasedOn="{StaticResource DefaultStyle}"/>
FrameworkElement
не застосовується до всіх моїх елементів керування - це відповіло на це питання!