我要实现的是、
1. 当鼠标移(MouseOver)到每个Border上面时,border的BorderBrush属性发生变化,由Transparent变为OrangeRed, 移走时恢复为原来属性
2. 当点击(MouseClick)任意一个Border时,border的BorderBrush就会为OrangeRed,当点击另一个Border时之前选中的Item的Border变为Transparent.
我的wpf结构如下:
<Windows.Re <Window.Resources>
        <Style TargetType="Border">
            <Setter Property="BorderThickness" Value="5"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="BorderBrush" Value="OrangeRed"/>
                </Trigger>
            </Style.Triggers>
        </Style>        <Style TargetType="Image">
            <EventSetter Event="MouseLeftButtonDown" Handler="BorderItemClicked"/>
        </Style> </Window.Resources><UniformGrid Column="4" Row="2">
    <Border>
         <Image Source=... MouseEvent....>
    </Boder>
    <Border>
         <Image Source=... MouseEvent....>
    </Boder>
    <Border>
         <Image Source=... MouseEvent....>
    </Boder>
    <Border>
         <Image Source=... MouseEvent....>
    </Boder>
    ......
</UniformGrid>
我现在第一步已经实现,第二步基本实现,有一个Bug,问题是在我任意点击一个Border后再次点击第二个Border,当鼠标移回到(MouseOver)前一个border时不会触发MouseOver事件,也就是说前一个border的属性没有变化。
请问是什么原因?谢谢大家

解决方案 »

  1.   

    用 事件触发器  EventTrigger
      

  2.   

    ??????为什么我找不到EventTrigger,只有EventSetter啊????????
    我的代码在Border里包含图像Image,我测试了每次点击(MouseClick)的是Image,所以我目前的做法是在后台通过设置Image的Parent(此处为Border)来更改属性。当点击图片时((Border)bullet1.Parent).BorderBrush = Brushes.OrangeRed;当点击其他图片时((Border)bullet1.Parent).BorderBrush = Brushes.Transparent;
    麻烦你指点一下 多谢