Есть несколько способов сделать это. Если вы посмотрите на Список приоритетов на MSDN
тогда вы можете видеть, что Forground, установленный способами 1-8, переопределит Foreground
из стиля по умолчанию. Самый простой способ - просто установить локальное значение в TextBox
.
<TextBox Foreground="Red" />
Еще одна вещь, которую вы можете сделать, это использовать свойство 'BasedOn'
стилей для переопределения других версий. Это требует указания значения ключа для стиля по умолчанию, но затем его можно использовать для применения значения по умолчанию, как в этом примере:
<Style TargetType="{x:Type TextBox}"
x:Key="myTextBoxStyle">
<Setter Property="Foreground"
Value="Red" />
<Setter Property="FontWeight"
Value="Bold" />
</Style>
<!-- Style applies to all TextBoxes -->
<Style TargetType="{x:Type TextBox}"
BasedOn="{StaticResource myTextBoxStyle}" />
<TextBox Text="Hello">
<TextBox.Style>
<Style BasedOn="{StaticResource myTextBoxStyle}" TargetType="{x:Type TextBox}">
<Setter Property="Foreground"
Value="Blue" />
</Style>
</TextBox.Style>
</TextBox>
Edit:
В случае, если стиль по умолчанию применяет значение, и вы хотите вернуть его к базовому значению, есть несколько способов, как я могу придумать, чтобы получить такое поведение. Вы не можете, насколько я знаю, связываться со стандартным значением темы по умолчанию.
Однако мы можем сделать некоторые другие вещи. Если нам нужен стиль, чтобы не применять некоторые свойства, мы можем установить стиль на {x:Null}
, тем самым помешая применению стиля по умолчанию. Или мы можем присвоить элементу собственный стиль, который не наследуется от базового стиля, а затем повторно применить только те сеттеры, которые нам нужны:
<TextBox Text="Hello" Style="{x:Null}" />
<TextBox Text="Hello">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="FontWeight"
Value="Bold" />
</Style>
</TextBox.Style>
</TextBox>
Мы могли бы изменить стиль по умолчанию так, чтобы передний план устанавливался только при определенных условиях, например, при значении тега определенное значение.
<Style TargetType="{x:Type TextBox}"
x:Key="myTextBoxStyle">
<Setter Property="FontWeight"
Value="Bold" />
<Style.Triggers>
<Trigger Property="Tag"
Value="ApplyForeground">
<Setter Property="Foreground"
Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
<TextBox Text="Hello" />
<TextBox Text="Hello" Tag="ApplyForeground" />