注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

分享,态度 ·~~

—— 十年太长,五年;如果可以回到五年前,你最想对那时候的自己说什么?

 
 
 

日志

 
 

Windows8: VisualStateManager.VisualStateGroups 附加属性  

2011-11-11 14:53:03|  分类: Windows 8 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

获取或设置 VisualStateGroup 对象的集合。

命名空间:  System.Windows
程序集:  PresentationFramework(在 PresentationFramework.dll 中)

属性值

类型:System.Collections.IList
VisualStateGroup 对象的集合。

备注

每个 VisualStateGroup 都包含 VisualState 对象的集合。 VisualState 包含 Storyboard 对象的集合,用于指定控件处于特定状态时如何更改控件的外观。 例如,Button 在被按下或未被按下时,可能有稍有不同的外观。 Button 定义的对应于被按下 ("Pressed") 和不被按下 ("Normal") 时的两个状态。

通过在控件上设置 VisualStateGroups 附加属性向控件添加 VisualState 将互斥的各个状态放入同一个 VisualStateGroup 例如,CheckBox 具有两个 VisualStateGroup 对象。 其中一个包含状态 NormalMouseOverPressed  Disabled 另一个包含状态 CheckedUnChecked  Indeterminate  CheckBox 可同时处于状态 MouseOver UnChecked,但不能同时处于 MouseOver  Pressed 状态。

尽管您可以将 VisualState 对象添加到任何元素中,但它们对于使其他人重新定义 Control 的可视行为很有帮助。 如果创建了使用 ControlTemplate 的自定义控件,可以通过在其类定义上添加 TemplateVisualStateAttribute 来指定控件所处的状态。 然后如果任意用户为控件创建一个新的 ControlTemplate,即可将 VisualState 对象添加到该模板中。TemplateVisualStateAttribute.GroupName 相同的状态属于同一个 VisualStateGroup

有关如何在 ControlTemplate 中使用 VisualStateGroup 对象的更多信息,请参见通过创建 ControlTemplate 自定义现有控件的外观 有关如何创建使用 VisualStateManager 的控件的更多信息,请参见创建具有可自定义外观的控件


示例

下面的示例为包含一个 Grid  Button 创建了一个简单的 ControlTemplate 它还包含一个 VisualStateGroup,该对象名为 CommonStates,用于定义 MouseOver  Normal 状态。 VisualStateGroup 还具有一个 VisualTransition,该对象指定当用户将鼠标指针置于 Button 上时,Grid 将在半秒内由绿色变为红色。

XAML:
<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>

【伤不起啊伤不起,又是.net4.0的。from http://msdn.microsoft.com/zh-cn/library/system.windows.visualstatemanager.visualstategroups.aspx#Y0

  评论这张
 
阅读(1285)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017