Обновление переднего плана метки на окне active property-WPF - PullRequest
1 голос
/ 09 июня 2010

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

Я пытался так:

<Style TargetType="{x:Type Label}" x:Key="HeaderLabel">
    <Style.Triggers>
        <DataTrigger Binding="{Binding (Window.IsActive)}" Value="True">
            <Setter Property="FontSize" Value="15"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="FontFamily" Value="Arial"/>
            <Setter Property="Foreground" Value="Black"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding (Window.IsActive)}" Value="False">
            <Setter Property="FontSize" Value="15"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="FontFamily" Value="Arial"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </DataTrigger>

    </Style.Triggers>
</Style>

Ответы [ 2 ]

2 голосов
/ 09 июня 2010

Попробуйте эту привязку в DataTrigger:

Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=IsActive}"
0 голосов
/ 09 июня 2010

Под меткой, которая показывает название окна, вы подразумеваете название окна заголовка? Или что-то еще?

Если это последнее, то вы можете установить стиль метки по умолчанию и использовать только один триггер для неактивного состояния. Также убедитесь, что у вас есть Window в тексте данных метки. Должно быть так (не проверял):

<Style TargetType="{x:Type Label}" x:Key="HeaderLabel">
    <Setter Property="FontSize" Value="15"/>
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="FontFamily" Value="Arial"/>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>

    <Style.Triggers>
        <DataTrigger Binding="{Binding (Window.IsActive)}" Value="False">
            <Setter Property="FontSize" Value="15"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="FontFamily" Value="Arial"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="HorizontalAlignment" Value="Left"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

Если вы хотите изменить заголовок заголовка, я думаю, что самый простой способ - полностью переопределить стиль окна (для всех тем окон).

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