有关TransitioningContentControl组件的研究——Silverlight学习笔记[28]

TransitioningContentControl控件主要应用于变化内容的过渡呈现效果。本文为大家介绍该组件的特性以及实例应用。

 

组件所在命名空间:

System.Windows.Controls

 

组件常用方法:

AbortTransition:终止过渡并且返回前一个内容。

 

组件常用属性:

IsTransitioning:获取一个值来表示该控件实例是否处于过渡状态。

RestartTransitionOnContentChange:获取或设置一个值,指出在设置新内容过渡期间目前的过渡是否将中止。

Transition获取或设置过渡的名称。这些直接对应在PresentationStates组内部的VisualStates

 

组件常用事件:

TransitionCompleted:当目前的过渡完成时发生。

 

实例:

注意:要使该控件发生作用的条件是该控件实例的内容必须要改变,才能在内容改变途中产生过渡效果。

详细的说明在代码中给出。

MainPage.xaml文件代码

<UserControl

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" xmlns:layoutToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit" xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions" x:Class="SilverlightClient.MainPage"

    d:DesignWidth="320" d:DesignHeight="240">

    <UserControl.Resources>

        <!--设置渐变的样式开始-->

        <Style x:Key="tccUpDown" TargetType="layoutToolkit:TransitioningContentControl">

            <Setter Property="IsTabStop" Value="True" />

            <Setter Property="HorizontalContentAlignment" Value="Left" />

            <Setter Property="VerticalContentAlignment" Value="Top" />

            <Setter Property="Transition" Value="DefaultTransition" />

            <Setter Property="Template">

                <Setter.Value>

                    <ControlTemplate TargetType="layoutToolkit:TransitioningContentControl">

                        <Border>

                            <vsm:VisualStateManager.VisualStateGroups>

                                <vsm:VisualStateGroup x:Name="PresentationStates">

                                    <!--向上渐变开始-->

                                    <vsm:VisualState x:Name="UpTransition">

                                        <Storyboard>

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="1"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="30"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="0"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="0"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="-30"/>

                                            </DoubleAnimationUsingKeyFrames>

                                        </Storyboard>

                                    </vsm:VisualState>

                                    <!--向上渐变结束-->

                                    <!--向下渐变开始-->

                                    <vsm:VisualState x:Name="DownTransition">

                                        <Storyboard>

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="1"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="-40"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="0"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Opacity)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="0"/>

                                            </DoubleAnimationUsingKeyFrames>

 

                                            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">

                                                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>

                                                <SplineDoubleKeyFrame KeyTime="00:00:00.600" Value="40"/>

                                            </DoubleAnimationUsingKeyFrames>

                                        </Storyboard>

                                    </vsm:VisualState>

                                    <!--向下渐变结束-->

                                </vsm:VisualStateGroup>

                            </vsm:VisualStateManager.VisualStateGroups>

                        </Border>

                    </ControlTemplate>

                </Setter.Value>

            </Setter>

        </Style>

        <!--设置渐变的样式结束-->

    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Width="320" Height="240" Background="White">

        <StackPanel Background="Azure">

            <layoutToolkit:TransitioningContentControl x:Name="tcc" HorizontalAlignment="Center" Margin="30" FontSize="18" Content="点击按钮改变内容"/>

            <Button x:Name="UpButton" Content="" Width="100" Height="30" Margin="10" FontSize="14"/>

            <Button x:Name="DownButton" Content="" Width="100" Height="30" Margin="10" FontSize="14"/>

        </StackPanel>

    </Grid>

</UserControl>

 

MainPage.xaml.cs文件代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

 

namespace SilverlightClient

{

    public partial class MainPage : UserControl

    {

        public MainPage()

        {

            InitializeComponent();

            this.UpButton.Click += new RoutedEventHandler(UpButton_Click);

            this.DownButton.Click += new RoutedEventHandler(DownButton_Click);

        }

 

        void DownButton_Click(object sender, RoutedEventArgs e)

        {

            tcc.Transition = "DownTransition";//设置渐变效果的名称

            tcc.Content = DateTime.Now.ToLongTimeString();//令控件的内容发生改变,只有这样才能引发过渡效果

        }

 

        void UpButton_Click(object sender, RoutedEventArgs e)

        {

            tcc.Transition = "UpTransition";//设置渐变效果的名称

            tcc.Content = DateTime.Now.ToLongTimeString();//令控件的内容发生改变,只有这样才能引发过渡效果

        }

    }

}

 

最终效果图



图一:点击向上按钮时

 


图二:点击向下按钮时

作者:Kinglee
文章出处:Kinglee’s Blog ( http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

转载于:https://www.cnblogs.com/Kinglee/archive/2009/09/14/1566627.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
案例中的控件全部有源代码示范学习为主。 1.Calendar组件(日历组件) 2.ChildWindow组件(子窗体组件) 3.浮动窗体组件 4.GridSplitter组件 5.TabControl组件 6-7-8.TreeView组件 9.DtarGrid 10.强大的DataGrid组件[2]_数据交互之ADO.NET Entity Framework 11.强大的DataGrid组件[3]_数据交互之Linq to SQL——Silverlight学习笔记 12-13.强大的DataGrid组件[4]_实现CURD 14.强大的DataGrid组件[6]_调用存储过程服务端分页 15.强大的DataGrid组件[7]_自定义DataGrid 16.强大的DataGrid组件[8]_内嵌ComboBox动态数据联动 17.强大的DataGrid组件[9]_自定义头模板(HeaderTemplate) 18.强大的DataGrid组件[10]_自定义脚模板(FooterTemplate) 19.强大的DataGrid组件[11]_主从(Master-Details)的实现 20.强大的DataGrid组件[12]_分组(Group) 21.强大的DataGrid组件[13]_字段过滤(Filter) 22.强大的DataGrid组件[14][Final]_数据验证 23.有关DataForm组件研究_基础知识和实现服务端批量CURD 24.有关DataForm组件研究_显示多重数据模型集合 25.有关DataForm组件研究_自定义DataForm模板 26.有关Data Input类组件研究 27.有关Accordion组件研究 摘要: Accordion组件在开发中常用于信息的分类显示,用于显示数据验证信息不错 28.TransitioningContentControl组件: TransitioningContentControl控件主要应用于变化内容的过渡呈现效果 29.有关Navigation的: 在Silverlight的程序设计中经常需要在多个XAML页面之间进行切换,以进行不同的功能操作 30.有关ImplicitStyleManager组件: ImplicitStyleManager组件的作用是封装一个附加的行为,该行为将一个框架元素内的相关资源词典内的样式传播至它的子元素。该组件同样提供了附加属性,使资源字典能从外部源加载。层次状样式同样被支持,这与WPF相类似 31.有关Theme(主题): 在Silverlight的开发中,为组件设置统一的主题会让程序的外观显得美观大方 32.有关Expander组件研究 摘要: Expander组件常用做边栏目录的分类,比如Windows中“我的文档”的侧边栏。本文将为大家介绍该组件的基本特性以及实际应用 33.有关ViewBox组件 摘要: ViewBox的作用是拉伸或延展位于其中的组件,使之有更好的布局及视觉效 34.有关WrapPanel组件 摘要: WrapPanel组件作用是从左至右或从上至下依次安排位于其中的元素的位置,当元素超过该组件边缘时,它们将会被自动安排至下一行或列。该组件一般用于文本布局、拾色器、图片选择等。本文将为大家介绍该组件的基本特性以及应用实例 35.有关AutoCompleteBox组件 摘要: AutoCompleteBox(自动完成框)组件能加快我们的输入效率,同时也能够提高输入的联想效果 37.有关AutoCompleteBox组件研究[2]_常用特性实例介绍 38.有关AutoCompleteBox组件研究[3]_FilterMode和ItemFilter 摘要: 对于AutoCompleteBox组件而言,设置合理的过滤模式有利于对数据的精确筛选 39.有关AutoCompleteBox组件研究[4]_下拉框内嵌DataGrid与被嵌入DataGrid 摘要: 在AutoCompleteBox组件下拉框中嵌入DataGrid可以让我们更好地组织候选数据以达到更好的显示效果。与此类似的,在DataGrid组件中嵌入AutoCompleteBox组件可以便于我们进行数据的输入。本文将为大家讲述如何实现这两种效果 40.有关AutoCompleteBox组件研究[5][Final]_集成搜索引擎搜索建议(Search Suggestion) 摘要: 在AutoCompleteBox组件中集成搜索引擎的功能是十分常见的,这有助于我们更好地与Web进行交互。本文将为大家讲述如何在在AutoCompleteBox组件中集成搜索引擎的搜索建议 41.有关Rating组件研究 摘要: 我们经常能在网上发现为新闻、博客文章、图片或是电影视频的评分功能。在Silverlight中,使用Rating组件便能助我们完成以上的功能。本文将为大家介绍该组件的基础知识以及自定义应用方面等方面的内容 42.有关Input类组件研究 摘要: Input输入类控件丰富了我们的输入形式,合理地运用之,可以加快我们录入的速度。本文将为大家介绍Input类组件中的其他4个组件ButtonSpinner、DomainUpDown、NumericUpDown以及TimePicker的基础知识及其简单运用 43.有关DataVisualization类组件研究 摘要: Data Visualization类组件以直观的图表方式显示数据的分布,能够让我们更好地分析各数据的内在联系。本文主要向大家介绍该类组件的基本特性以及使用实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值