如何在鼠标悬停时更改多个属性

时间:2012-11-19 02:10:26

标签: wpf xaml

我刚刚开始使用WPF(如果问题太明显,我很抱歉),我设法将这种鼠标悬停方式整合在一起。 背景色动画为较暗的颜色。我现在想要将文本设置为白色,因此更容易阅读。

这是我尝试添加它的方式,但它给了我错误"无法解析属性路径中的所有属性引用' TextBlock.Foreground'。验证适用的对象是否支持属性"当我鼠标悬停它。

<Border Background="#e6ebf3" CornerRadius="0,10,0,10" >
    <Border.Style>
        <Style TargetType="Border">
            <Setter Property="Background" Value="#e6ebf3" />
            <Setter Property="TextBlock.Foreground" Value="Black"/>
            <Style.Triggers>
                <EventTrigger RoutedEvent="UIElement.MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Background.Color" To="#6d809b" />
                            <ColorAnimation Duration="0:0:0.1" Storyboard.TargetProperty="TextBlock.Foreground" To="white" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="UIElement.MouseLeave">
                     <BeginStoryboard>
                         <Storyboard>
                             <ColorAnimation Duration="0:0:0.1" Storyboard.TargetProperty="Background.Color" To="#e6ebf3" />
                            <ColorAnimation Duration="0:0:0.1" Storyboard.TargetProperty="TextBlock.Foreground" To="Black" />
                         </Storyboard>
                     </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
         </Style>
     </Border.Style>........

2 个答案:

答案 0 :(得分:1)

我发现了一种不使用故事板或动画的替代方法,所以我会发布它以防万一。尽管如此,仍然想知道原来的那个。

<Border CornerRadius="0,10,0,10" >
<Border.Style>
     <Style TargetType="Border">
          <Setter Property="Background" Value="#e6ebf3" />
          <Setter Property="TextBlock.Foreground" Value="Black"/>

          <Style.Triggers>
               <Trigger Property ="IsMouseOver" Value="True">
                    <Setter Property= "Background" Value="#6d809b"/>
                    <Setter Property= "TextBlock.Foreground" Value="White"/>
               </Trigger>
          </Style.Triggers>
     </Style>
 </Border.Style>
 ...

答案 1 :(得分:1)

间接属性定位,即TextBlock.Foreground,此处描述http://msdn.microsoft.com/en-us/library/ms742451.aspx。它基本上是在说,“嘿,我找不到一个名为TextBlock的属性按钮。”它适用于Background.Color,因为Background属性确实存在于Button上,它的类型为ColorBrush,它本身具有Color类型的属性。