相关文章推荐
    <Grid Background="Transparent">
        <VisualStateManager.VisualStateGroups>
            <!--VisualStateGroup:状态组:由相互排斥的状态组成,状态组与状态组并不互斥;-->
            <VisualStateGroup x:Name="CommonState">
                <!--视图状态(Visual States)表示控件在一个特殊的逻辑状态下的样式、外观;-->
                <VisualState x:Name="CheckedState">
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" To="#A1D6FC" Duration="0:0:0:1"/>
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="UnCheckedState"/>
                <!--Transitions:视图转变,代表控件从一个视图状态向另一个状态转换时的过渡-->
                <VisualStateGroup.Transitions>
                    <VisualTransition GeneratedDuration="0:0:1" To="CheckState"/>
                    <VisualTransition GeneratedDuration="0:0:1" To="UnCheckedState"/>
                </VisualStateGroup.Transitions>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <CheckBox Content="复选框" x:Name="_checkbox">
            <i:Interaction.Behaviors>
                <!--DataStateBehavior:根据条件语句在两种状态之间切换-->
                <ei:DataStateBehavior Binding="{Binding IsChecked,ElementName=_checkbox}" Value="True" TrueState="CheckedState" FalseState="UnCheckedState"/>
            </i:Interaction.Behaviors>
        </CheckBox>
    </Grid>

VisualStateManager 与trigger的区别

  1. Trigger是事件、属性或者所绑定的数据发生变化时,作出的相应改变;而 VisualStateManager 可以自由控制状态的切换,并定在切换时,可以指定 VisualTransition
  2. 对于 Trigger,定义模板的人可以自由地指定当条件符合时该有何种的变化;而对于 VisualStateManager,则需要控件开发人员定义不同的 VisualState,然后定义模板的人根据约定(根据 TemplateVisualStateAttribute 特性)来定义在控件不同状态下的样式;
  3. VisualStateManager 不仅支持 WPF,而且也支持 UWP,我们可以说它是“跨平台”的,而 Trigger 在 UWP 上不被支持
1、简单按钮模板的定义 2、使用 visualstatemanager 、visualstategroup、visualstate控制button的normal、mouseover、pressed等状态切换的过渡效果 3、这里是效果展示和代码解析:http://soolazy.blog.163.com/blog/static/182904208201311910539738/ 本文是 wpf 入门系列第二篇,面向有winform或者web前端基础的、并且也有C#基础的同学。 在 WPF 中,View(Window,UserControl等)常常会根据不同的状态来显示不同的内容,比如消息的未读和已读是两种状态,这两种状态下View的表现形式会有所差别。本文将从头开始一个的示例项目,来简单的介绍VisualState的用法。 本文使用了 Visual Studio 2017... wpf 4正式测试成功完成了 VisualStateManager 的功能。在此之前我没有确认 wpf 3.5是否已经支持此功能。以下是我使用vs2010 rc写的demo程式: 1.xaml部份一般都是用blend来设计的state。这里为了文章篇写的方便,我直接把xaml放出来.在blend中只能用鼠标拖拖放放即可弄出很多state。这功能对很多应用都很有好处。不用每次都自己写动画。还支持动画延时效果...   Silverlight中的动画(Animation)与视图状态管理(Visual State Manager) 结合使用是非常常见的,动画用于管理对象在某段事件段内执行的动画动作,视图状态管理则用于控制对象在多个不同的视觉状态之间切换、导航。本篇主要介绍动画(Animation)与视图状态管理(Visual State Manager)的结合应用,关于视图状态管理的详细内容请大家查看相关资料。... 声明性视觉状态 想象一下,我们有一个用户个人资料的视图,根据当前用户的角色(访客、成员或版主),该视图可能略有不同,换句话说,该视图具有三个相似的状态: 你将如何设计它? 三种不同的活动? 将常用 UI 提取为片段? 通过代码实现单一布局和控制可见性? 我建议一种解决方案,您可以在单个布局 xml 文件中声明这些状态,然后在代码中调用 goToState(即“Moderator”)(将代码中的垃圾移动到 xml 中)。 这种方法类似于我们在 XAML 世界中使用的 C# VisualStateManager 。 现在看起来很干净! public class MainActivity extends Activity { private VisualStateManager visualStateManager ; @Override protected void VisualStateManager 带来了什么? 在 WPF 中我们可以用各种Trigger配合Animation,Template来实现绚丽控件的外观变换,用后台逻辑来定义和标注控件不同的状态。.Net Framework 4.o开始引入了 VisualStateManager ,主要为了控制控件的状态转换,和其间涉及的外观行为。从控件状态迁移层面上管理空间的外观行为,在设计级别上感觉层次更清晰, //线程初始化时执行方法可以带一个object参数,为了传入自定义参数,所以执行需单独调用用于传参。 Console.WriteLine("执行线程"); Thread th = new Thread((objParam) => Console.W... 在 WPF 中,它的功能似乎更強大。在UWP中,閹割了GotElementState方法,導致它只能在控件內部使用。 這個東東一般用來突出某些操作,以提醒用戶。它原來是狀態A,後來用戶進行了某些操作,我們就會根據用戶的操作,判斷他想要做什麼,然後根據他的目的,... VisualStateManager 直译过来就是可视化状态管理器,如名,它的功能就是控制当前页面控件的可视化状态,具体点就是,控制控件颜色,位置等可视化属性,让他们能在特定的情况下发生变化,比如,通过设置在 VisualStateManager 里的AdaptiveTrigger中的MinWindowWidth属性,实现在不同分辨率下,当前页面背景颜色发生变化的效果,效果如下图 实现效果的代码如下图... <Window.Resources> <Style TargetType="Button" x:Key="AnimatedStyle" > <Setter Property="Template"> <Setter.Value> WPF 中的 Triggers 和 VisualStateManager ,可以参考 WPF : WPF 中的 Triggers 和 VisualStateManager ,这篇文章写的很详细,值得仔细阅读。 x:Class="sharedstylewithdatatemplate.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 每次写blog一定是我遇到什么实际问题了。而这次的问题,和文章标题没有特别大的关系。因为上一篇文我讲到了自定义日历控件(Calendar)的事,在我改CalendarDayButtonStyle的过程中,我发现默认的Style中出现了大量的VisualState标签。但正如上文中所说,一个自身的 WPF 程序员或许对VisualState相关类也会感到陌生,更何况我呢。于是我决定,对VisualState相关类进行学习。我打开微软官网,搜了下VisualState,首先在Windows App SDK的内容中看 在之前写的这篇文章 WPF : 只读依赖属性的介绍与实践 中,我们介绍了在 WPF 自定义控件中如何添加只读依赖属性,并且使其结合属性触发器 (Trigger) 来实现对控件样式的改变。事实上,关于触发器,在 WPF 中除了属性触发器,还有事件触发器 (EventTrigger) 和数据触发器 (DataTrigger)。此外,为了控制控件外观的切换,除了可以使用触发器外,我们还可以使用 Visua... VisualStateManager ,需要定义 VisualState;在 VisualState 中定义控件的不同的状态以及每种状态下的样式 GoToState 来切换到...
 
推荐文章