VisualStateManager.VisualStateGroups 附加属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置 VisualStateGroup 对象的集合。
see GetVisualStateGroups
see GetVisualStateGroups
see GetVisualStateGroups
示例
以下示例为包含一Grid个Button实例的简单ControlTemplate方法创建一个。 它还包含一个 VisualStateGroup 命名, CommonStates
用于定义 MouseOver
和 Normal
状态。 VisualStateGroup此外,还有一个VisualTransition指定当用户将鼠标指针移到鼠标指针上方Button时,将鼠标指针从绿色更改为红色需要半秒Grid的时间。
<ControlTemplate TargetType="Button">
<Grid >
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<!--Take one half second to trasition to the MouseOver state.-->
<VisualTransition To="MouseOver"
GeneratedDuration="0:0:0.5"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal" />
<!--Change the SolidColorBrush, ButtonBrush, to red when the
mouse is over the button.-->
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ButtonBrush"
Storyboard.TargetProperty="Color" To="Red" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.Background>
<SolidColorBrush x:Name="ButtonBrush" Color="Green"/>
</Grid.Background>
</Grid>
</ControlTemplate>
注解
每个 VisualStateGroup 对象都包含一个 VisualState 对象集合。 一 VisualState 个对象集合,该集合 Storyboard 指定控件在控件处于特定状态时控件的外观更改方式。 例如, Button 当按下时,它的外观可能略有不同,而不是按下时。 定义 Button 对应于按下 ("Pressed"
) 时和未 () "Normal"
时的两个状态。
通过在控件上设置VisualStateGroups附加属性来添加到VisualState控件。 将相互排斥的状态放在同一 VisualStateGroup个状态中。 例如,有 CheckBox 两个 VisualStateGroup 对象。 一个包含状态、Normal
、MouseOver``Pressed
和Disabled
。 另一个包含状态、Checked``UnChecked
状态和 Indeterminate
。 可以CheckBox同时处于状态MouseOver``UnChecked
,但它不能同时处于MouseOver
状态和Pressed
状态。
尽管可以将对象添加到 VisualState 任何元素,但它们是一种特别有用的方法,使其他人能够重新定义对象的 Control视觉行为。 如果创建自定义控件, ControlTemplate则可以通过在其类定义中添加一个 TemplateVisualStateAttribute 状态来指定控件可以处于哪个状态。 然后,为控件创建新 ControlTemplate 对象的任何人都可以将对象添加到 VisualState 模板。 具有相同 System.Windows.TemplateVisualStateAttribute.GroupName 的州属于同一 VisualStateGroup个。
有关如何使用对象的详细信息,请参阅通过创建 ControlTemplate 自定义现有控件的外观。ControlTemplateVisualStateGroup 有关如何创建使用该 VisualStateManager控件的详细信息,请参阅 创建具有可自定义外观的控件。