Невозможно переопределить стиль метки в WPF - PullRequest
1 голос
/ 12 января 2011

Я определил стиль для метки в App.xaml.

 <Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Label" >
            <Setter Property="Foreground" Value="Blue"/>
        </Style>
        <Style TargetType="TextBlock" >
            <Setter Property="Foreground" Value="Blue"/>
        </Style>
    </ResourceDictionary>
</Application.Resources>

Стиль, примененный к элементу управления меткой в ​​моем MainWindow.xaml ранеено когда я попытался явно задать передний план для элемента управления, он не работал (интересно).Цвет, определенный в App.xaml, все еще применяется (только для Label).

<Grid>
    <Label Content="Label" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    <TextBlock Text="TextBlock" Foreground="Black" VerticalAlignment="Bottom" Height="15.96" Margin="257.537,0,270.003,86" />
</Grid>

Та же логика работает для Textblock и всех элементов управления.Любые предложения, пожалуйста?

Ответы [ 2 ]

6 голосов
/ 12 января 2011

Ваши Label Foreground будут отображаться синим цветом из-за стиля, установленного для TextBlock

<Style TargetType="TextBlock" >
    <Setter Property="Foreground" Value="Blue"/>
</Style>

Подробнее об этом можно узнать в

Различия между Label и TextBlock

4 голосов
/ 02 февраля 2012

Это объяснение, но не решение;)

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="FontFamily"
            Value="Tahoma" />
    <Setter Property="FontSize"
            Value="{StaticResource StandardFontSize}" />
    <Setter Property="Foreground"
            Value="Black" />
    <Setter Property="VerticalAlignment"
            Value="Center" />
    <Setter Property="HorizontalAlignment"
            Value="Left" />
</Style>    
<Style TargetType="{x:Type Label}">
    <Setter Property="Foreground"
            Value="Black" />
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock Text="{Binding}"
                           Foreground="{Binding RelativeSource={RelativeSource AncestorType=Label}, Path=Foreground}" />
            </DataTemplate>
        </Setter.Value>
    </Setter>            
</Style>

Если вы определите свои стили, как это, то вы также можете установить / переопределить ваш Label Foreground в вашей сетке. Таким образом, эти стили по умолчанию используют метки и надписи на черном фоне, но вы можете изменить их на синий, если хотите.

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