我有一個默認的標籤樣式爲什麼我無法重寫默認的BasedOn樣式? WPF
<Style x:Key="LabelStyle" TargetType="{x:Type Label}">
<Setter Property="FontFamily" Value="Segoe UI" />
<Setter Property="FontSize" Value="13.333" />
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
<Style BasedOn="{StaticResource LabelStyle}" TargetType="{x:Type Label}" />
然後我嘗試用不同的風格單個標籤
<Style x:Key="HeaderLabelStyle" TargetType="{x:Type Label}">
<Setter Property="FontFamily" Value="Segoe UI" />
<Setter Property="FontSize" Value="16" />
<Setter Property="Foreground" Value="{StaticResource HeaderForegroundBrush}" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
</Style>
<Label Content="Text here" Name="someName" Style="{StaticResource HeaderLabelStyle}"/>
但由於某些原因的標籤總是得到默認的樣式。爲什麼?這可以被覆蓋嗎?
感謝
你的風格在哪裏? 'Application.Resources','Window.Resources'等等?它可能是[this](https://stackoverflow.com/q/9035878/302677)是問題。 – Rachel
是的,除非你想讓一個隱式樣式全局應用於整個應用程序,否則我建議將它放在'Window.Resources'中。 'Application.Resources'中的所有內容都應該有一個'x:Key',或者實際上是全局的。 – Rachel
很高興你把它整理出來:)但應該指出,'Label'和'TextBlock'繼承自不同的基本控件,並使用不同的規則。一個'Label'繼承自'Control',它具有諸如尊重模板邊界的規則。 'TextBlock'繼承自'FrameworkElement',而不是。 – Rachel