Стили не применяются ко всем элементам управления в контейнере - PullRequest
1 голос
/ 25 июля 2011

У меня есть окно с элементом управления Grid с четырьмя столбцами и четырьмя рядами. Он содержит следующее:

<Label Name="HeightLabel" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Content="Height" Target="{Binding ElementName=HeightValue}"/>
<TextBox Name="HeightValue" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center"/>

<Label Name="WeightLabel" Grid.Column="2" Grid.Row="0" Grid.ColumnSpan="2" Content="Weight" Target="{Binding ElementName=WeightValue}"/>
<TextBox Name="WeightValue" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center"/>

<Label Name="WidthLabel" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="2" Content="Width" Target="{Binding ElementName=WidthValue}"/>
<TextBox Name="WidthValue" Grid.Column="0" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center"/>

<Label Name="LengthLabel" Grid.Column="2" Grid.Row="2" Grid.ColumnSpan="2" Content="Length" Target="{Binding ElementName=LengthValue}"/>
<TextBox Name="LengthValue" Grid.Column="2" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Top" TextAlignment="Center"/>

со следующим стилем, примененным в Словаре ресурсов:

<Style TargetType="{x:Type Label}">
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Label}">
                <Border>
                    <ContentPresenter TextBlock.FontSize="18"
                                      TextBlock.Foreground="Red" 
                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                      RecognizesAccessKey="True"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Проблема в том, что стилируется только последний элемент управления меткой; остальные получают стиль TextBlock по умолчанию. Я знаю, что Label содержит встроенный TextBlock, который делает стилизацию более сложной, чем большинство других элементов управления, поэтому я подозреваю, что происходит какая-то проблема с иерархией, но я не могу это понять.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Они все стилизуются на моем экране при использовании VALID Style.У вас есть несколько проблем, таких как Foreground = "{Red}" вместо Foreground = "Red" и отсутствие />

<Style TargetType="{x:Type Label}">
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Label}">
                <Border>
                    <ContentPresenter TextBlock.FontSize="18"
                                      TextBlock.Foreground="Red" 
                                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                      RecognizesAccessKey="True" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
0 голосов
/ 29 июля 2011

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

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