Применить стиль к нескольким элементам управления, когда триггер стиля срабатывает в xaml - PullRequest
1 голос
/ 26 марта 2012

Когда пользователь вводит информацию, я хочу, чтобы все элементы управления выглядели и действовали одинаково, в результате я сделал следующее.

Элементы управления надписью и текстовым полем находятся в стеке как:

    <StackPanel Style="{StaticResource ResourceKey=myInput}" HorizontalAlignment="Left">
        <Label Content="Label" Name="label1"  />
        <TextBox Name="textBox1"  ></TextBox>
    </StackPanel>

стиль "myInput":

<Style x:Key="myInput" TargetType="{x:Type StackPanel}">
    <Style.Resources>
            <Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
                <Setter Property="FontSize" Value="12" />
            </Style>
            <Style TargetType="{x:Type TextBox}">
                <Setter Property="Margin" Value="5,-5,2,2"></Setter>
                <Setter Property="Height" Value="23"/>
                <Setter Property="VerticalAlignment" Value="Top"/>
                <Style.Triggers>
                    <Trigger Property="IsFocused" Value="true">
                        <Setter Property="Background" Value="Blue" >                                
                        </Setter>                           
                    </Trigger>
                </Style.Triggers>
            </Style>
    </Style.Resources>
</Style>

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

Как я могу установить жирный шрифт метки для жирного шрифта, когда это событие запускается? Я хотел бы сделать это с xaml.

1 Ответ

2 голосов
/ 26 марта 2012

Используйте DataTrigger на вашем Label, который проверяет, находится ли фокус клавиатуры внутри родительского StackPanel, который содержит оба объекта

<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
    <Setter Property="FontSize" Value="12" />
    <Style.Triggers>
        <DataTrigger Value="True" Binding="{Binding IsKeyboardFocusWithin,
            RelativeSource={RelativeSource AncestorType={x:Type StackPanel}}}">
            <Setter Property="FontWeight" Value="Bold" />
        </Trigger>
    </Style.Triggers>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...