这段代码来自MSDN,我作了修改:
<Rectangle Name="rect" Width="100" Height="100" MouseEnter="rect_MouseEvent" MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseState">
<VisualState Name="MouseEnter" />
<VisualState Name="MouseLeave" />
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
<VisualTransition.Storyboard>
<Storyboard>
<ColorAnimation To="Green" Storyboard.TargetName="rectBrush" Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualTransition.Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>问题:
当鼠标移到矩形上时,颜色从红色逐渐变成绿色,为什么会反弹会红色呢?WPF
<Rectangle Name="rect" Width="100" Height="100" MouseEnter="rect_MouseEvent" MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseState">
<VisualState Name="MouseEnter" />
<VisualState Name="MouseLeave" />
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
<VisualTransition.Storyboard>
<Storyboard>
<ColorAnimation To="Green" Storyboard.TargetName="rectBrush" Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualTransition.Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>问题:
当鼠标移到矩形上时,颜色从红色逐渐变成绿色,为什么会反弹会红色呢?WPF
解决方案 »
- 求高手指教,如何在一个windos窗体中的两个DataGridView控件中显示两个表,另外如何将表中的时间显示到DataTimerpicker控件上?
- ref out 有什么不同
- 请问.net怎样做进度啊?
- 怎样在.NET2003窗口模式下运行外部程序(*.exe文件)???求高手指点!!!
- C#中的索引符是怎么应用的?
- winform 如何修改成GDI混合GDI+绘图 提高绘图效率
- c#
- C# API 如何得到 系统当前活动文件夹名称 并在根据 名称 在这文件夹标题栏上增加1个文字按钮呢?
- 在线100分求助:如何控制。NET网页中报表的打印??
- 正则表达式问题,如果通过验证控件来验证输入框中的文字是汉字?
- C# 读取64位OS的注册表问题
- 如何获取treeview选中的层数?
<Rectangle Name="rect" Width="100" Height="100" MouseEnter="rect_MouseEvent" MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseState">
<VisualState Name="MouseEnter">
<Storyboard>
<ColorAnimation To="Green"
Storyboard.TargetName="rectBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>
<VisualState Name="MouseLeave"/>
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:00.5">
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>
<Rectangle Name="rect" Width="100" Height="100" MouseEnter="rect_MouseEvent" MouseLeave="rect_MouseEvent">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="MouseState">
<VisualState Name="MouseEnter">
<Storyboard>
<ColorAnimation To="Green"
Storyboard.TargetName="rectBrush"
Storyboard.TargetProperty="Color"/>
</Storyboard>
</VisualState>
<VisualState Name="MouseLeave"/>
<VisualStateGroup.Transitions>
<VisualTransition To="MouseLeave" GeneratedDuration="00:00:00"/>
<VisualTransition To="MouseEnter" GeneratedDuration="00:00:02">
<VisualTransition.Storyboard>
<Storyboard>
<ColorAnimation To="Yellow" Storyboard.TargetName="rectBrush" Storyboard.TargetProperty="Color" Duration="00:00:00.5"/>
</Storyboard>
</VisualTransition.Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectBrush" Color="Red"/>
</Rectangle.Fill>
</Rectangle>
VisualState: 在处于特定状态时,表示控件的可视化外观。 上面是MSDN上的,可见VisualTransition强调的是状态过渡期间的行为。当处于特定状态时,由VisualState负责其可视外观。你这里的例子从一个状态过度到另一个状态时有一个时间差(0.05秒),在这段时间差内,VisualTransiton可以做一些“小动作”,但一旦过度完成(结束),那么还是由VisualState来决定可视状态。