wpf中的视觉状态是什么?谁知道如何开始理解和使用它?
也许就像一个完整的教程,因为我以前从未接触过视觉状态。或者只是一个简单的示例代码
是的,是的答案 0 :(得分:8)
WPF中的视觉状态是关于控制控件的外观。控制状态可能会发生变化,然后响应状态变化而出现控制变化。例如,如果按下/禁用/对焦控件,则每个状态可能具有不同的外观。有一个例子说明如何使用WPF的触发机制来改变控件here的外观;这将为您提供有关更改控件外观的一些一般背景信息。 WPF here上有一个很好的通用教程,对Visual State here有一个很好的解释。 有关更高级的用法,请参阅Microsoft在Visual State Manager here
上提供的信息答案 1 :(得分:2)
视觉状态用于在控件的不同状态下更改wpf控件的外观,例如,在单选按钮的情况下,在聚焦时,单击或禁用时,它可能会显示不同,
视觉状态属于不同的视觉状态组,如
主要使用的视觉状态是:
给出了单选按钮样式中使用的visualstate的示例
<Style TargetType="RadioButton">
<Setter Property="Background"
Value="Transparent" />
<Setter Property="Foreground"
Value="{DynamicResource BlackBrush}" />
<Setter Property="Padding"
Value="1,4,0,0" />
<Setter Property="HorizontalAlignment"
Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border Background="{TemplateBinding Background}">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="CommonStates">
<vsm:VisualState x:Name="Normal" >
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{DynamicResource HpGray13Brush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{DynamicResource HpGray15Brush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{DynamicResource GreenBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="BackgroundEllipse"
Storyboard.TargetProperty="Stroke">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{DynamicResource HpGray1Brush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="CheckGlyph"
Storyboard.TargetProperty="Fill">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{DynamicResource Gray1Brush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
答案 2 :(得分:0)
Wpf中的可视状态正在响应一个描述的事件,同时控制一个或多个控件(一组属性)的外观,包括动画。最好使用Microsoft Blend了解。