【发布时间】:2014-01-03 10:42:11
【问题描述】:
我正在尝试建立一个像视觉工作室这样的设计师。
看看xaml:
<Style x:Key="myStyle" TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="DodgerBlue" />
</Trigger>
</Style.Triggers>
</Style>
...
...
...
<Border Style="myStyle">
<Grid>
<Border Style="myStyle">
<Rectangle Fill="Transparent" />
<TextBlock Text="abc" />
</Border>
</Grid>
</Border>
上面的代码运行良好。现在我想扩展上面的样式,这样当我点击任何控件时,边框的颜色应该变成绿色。
更新:
我已经把上面的样式改成了下面的代码。
<Style x:Key="BorderStyle" TargetType="{x:Type Border}">
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="DodgerBlue" />
</Trigger>
<EventTrigger RoutedEvent="MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="BorderBrush.Color" To="Green" Duration="0:0:0.100" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
现在我可以看到当我单击边框时,它的颜色变为绿色。但是当鼠标离开文本块时,边框的颜色会变回透明。
【问题讨论】:
-
我知道我可以使用 EventTrigger 但 Border 没有任何 Click 事件。
-
什么是“点击任何控件”。意思是..??
-
@Farzi 我认为 Click = MouseDown + MouseUp。
-
我问点击“任何控件”的意思...点击什么(?)您希望边框变为绿色..
-
@Farzi 抱歉,我的意思是点击任意边框。