использование триггера для установки переднего плана текстового блока при наведении курсора - PullRequest
14 голосов
/ 17 декабря 2010

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

<TextBlock Foreground="blue" Margin="18,234,5,-2" Grid.RowSpan="3">
    <Underline>Remove Message</Underline>
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
                <Trigger Property ="IsMouseOver" Value="True">
                    <Setter Property= "Foreground" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

Когда я пытаюсь изменить свойство сеттера на любое другое, например FontSize="30", событие происходит.

1 Ответ

41 голосов
/ 17 декабря 2010

Это потому, что свойства, установленные для элемента управления, переопределяют свойства, определенные в стиле, поэтому ваш Foreground = "blue" будет переопределять все, что вы установили в стиле.Чтобы это исправить, вы можете переместить Foreground = "blue" в стиле и удалить его из свойств элемента управления.

<TextBlock Margin="18,234,5,-2" Grid.RowSpan="3">
      <Underline>Remove Message</Underline>
      <TextBlock.Style>
           <Style TargetType="TextBlock">
               <Setter Property= "Foreground" Value="Blue"/>
               <Style.Triggers>
                   <Trigger Property ="IsMouseOver" Value="True">
                        <Setter Property= "Foreground" Value="Red"/>
                   </Trigger>
               </Style.Triggers>
            </Style>
       </TextBlock.Style>
</TextBlock>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...