• 重新想象 Windows 8 Store Apps (21) 动画: ThemeTransition(过渡效果)


    [源码下载]


    重新想象 Windows 8 Store Apps (21) - 动画: ThemeTransition(过渡效果)



    作者:webabcd


    介绍
    重新想象 Windows 8 Store Apps 之 动画

    • ThemeTransition 的概述
    • EntranceThemeTransition - 页面间跳转时的过渡效果
    • ContentThemeTransition - 内容改变时的过渡效果
    • RepositionThemeTransition - 位置改变时的过渡效果
    • PopupThemeTransition - 弹出时的过渡效果
    • AddDeleteThemeTransition - 添加项或删除项时的过渡效果
    • ReorderThemeTransition - 对集合中的元素重新排序时的过渡效果
    • PaneThemeTransition - 基于边缘的较大 UI 滑入和滑出时的过渡效果
    • EdgeUIThemeTransition - 基于边缘的较小 UI 滑入和滑出时的过渡效果



    示例
    1、过渡效果的概述
    Animation/ThemeTransition/Summary.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Summary"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <TextBlock Text="请参见本 xaml 中的注释" FontSize="14.667" />
    
                <!--
                    UIElement.Transitions - 指定 UIElement 的过渡动画
                
                    <Rectangle>
                        <Rectangle.Transitions>
                            <TransitionCollection>
                                <EntranceThemeTransition/>
                            </TransitionCollection>
                        </Rectangle.Transitions>
                    </Rectangle>
                -->
    
    
                <!--
                    Panel.ChildrenTransitions - 指定 Panel 的子元素们的过渡动画
                
                    <WrapGrid>
                        <WrapGrid.ChildrenTransitions>
                            <TransitionCollection>
                                <EntranceThemeTransition/>
                            </TransitionCollection>
                        </WrapGrid.ChildrenTransitions>
                    </WrapGrid>
                -->
    
    
                <!--
                    ItemsControl.ItemContainerTransitions - 指定 ItemsControl 的项容器的过渡动画
                
                    <ItemsControl>
                        <ItemsControl.ItemContainerTransitions>
                            <TransitionCollection>
                                <EntranceThemeTransition/>
                            </TransitionCollection>
                        </ItemsControl.ItemContainerTransitions>
                    </ItemsControl>
                -->
    
    
                <!--
                    ContentControl.ContentTransitions - 指定 ContentControl 的过渡动画
                
                    <ContentControl>
                        <ContentControl.ContentTransitions>
                            <TransitionCollection>
                                <EntranceThemeTransition/>
                            </TransitionCollection>
                        </ContentControl.ContentTransitions>
                    </ContentControl>
                -->
                
            </StackPanel>
        </Grid>
    </Page>


    2、演示 EntranceThemeTransition
    Animation/ThemeTransition/Entrance.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Entrance"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
                
                <!--
                    EntranceThemeTransition - 页面间跳转时的过渡效果
                        FromHorizontalOffset - 初始位置的水平偏移量
                        FromVerticalOffset - 初始位置的垂直偏移量
                        IsStaggeringEnabled - 当包含多个子元素时,是否需要错开呈现它们
                -->
                <Frame Name="frame" Width="400" Height="100" HorizontalAlignment="Left" VerticalAlignment="Top">
                    <Frame.ContentTransitions>
                        <TransitionCollection>
                            <EntranceThemeTransition IsStaggeringEnabled="False" />
                        </TransitionCollection>
                    </Frame.ContentTransitions>
                </Frame>
    
                <Button Name="btnGotoFrame1" Content="导航至 Frame1" Click="btnGotoFrame1_Click_1" Margin="0 10 0 0" />
                <Button Name="btnGotoFrame2" Content="导航至 Frame2" Click="btnGotoFrame2_Click_1" Margin="0 10 0 0" />
    
                <ItemsControl x:Name="itemsControl" Margin="0 10 0 0">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapGrid>
                                <WrapGrid.ChildrenTransitions>
                                    <TransitionCollection>
                                        <EntranceThemeTransition IsStaggeringEnabled="True" />
                                    </TransitionCollection>
                                </WrapGrid.ChildrenTransitions>
                            </WrapGrid>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.Items>
                        <Rectangle Width="100" Height="100" Fill="Red" />
                        <Rectangle Width="100" Height="100" Fill="Green" />
                        <Rectangle Width="100" Height="100" Fill="Blue" />
                    </ItemsControl.Items>
                    <ItemsControl.Template>
                        <ControlTemplate>
                            <Border BorderBrush="Orange" BorderThickness="1">
                                <ItemsPresenter Margin="10" VerticalAlignment="Center" HorizontalAlignment="Center" />
                            </Border>
                        </ControlTemplate>
                    </ItemsControl.Template>
                </ItemsControl>
                
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Entrance.xaml.cs

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Entrance : Page
        {
            public Entrance()
            {
                this.InitializeComponent();
            }
    
            private void btnGotoFrame1_Click_1(object sender, RoutedEventArgs e)
            {
                frame.Navigate(typeof(XamlDemo.Controls.Frame.Frame1));
            }
    
            private void btnGotoFrame2_Click_1(object sender, RoutedEventArgs e)
            {
                frame.Navigate(typeof(XamlDemo.Controls.Frame.Frame2));
            }
        }
    }


    3、演示 ContentThemeTransition
    Animation/ThemeTransition/Content.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Content"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <!--
                    ContentThemeTransition - 内容改变时的过渡效果
                        FromHorizontalOffset - 初始位置的水平偏移量
                        FromVerticalOffset - 初始位置的垂直偏移量
                -->
                <ContentControl Name="contentControl" PointerPressed="contentControl_PointerPressed_1">
                    <ContentControl.ContentTransitions>
                        <TransitionCollection>
                            <ContentThemeTransition />
                        </TransitionCollection>
                    </ContentControl.ContentTransitions>
                    <ContentControl.Content>
                        <Rectangle Height="200" Width="200" Fill="Orange" />
                    </ContentControl.Content>
                </ContentControl>
    
    
                <!--
                    如果要在 ScrollViewer 或其他继承了 ContentControl 的控件中应用 ContentThemeTransition 的话,应该用如下方式
                -->
                <ScrollViewer Name="scrollViewer" Margin="0 10 0 0" PointerPressed="scrollViewer_PointerPressed_1">
                    <ContentControl Content="{Binding}">
                        <ContentControl.ContentTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Vertical">
                                    <Rectangle Height="200" Width="200" Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" />
                                </StackPanel>
                            </DataTemplate>
                        </ContentControl.ContentTemplate>
                        <ContentControl.ContentTransitions>
                            <TransitionCollection>
                                <ContentThemeTransition/>
                            </TransitionCollection>
                        </ContentControl.ContentTransitions>
                    </ContentControl>
                </ScrollViewer>
                
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Content.xaml.cs

    using System;
    using Windows.UI;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Input;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Shapes;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Content : Page
        {
            public Content()
            {
                this.InitializeComponent();
            }
    
            // 改变 ContentControl 的内容
            private void contentControl_PointerPressed_1(object sender, PointerRoutedEventArgs e)
            {
                Rectangle rectangle = new Rectangle();
                Random random = new Random();
    
                rectangle.Height = 200;
                rectangle.Width = 200;
                rectangle.Fill = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255)));
    
                contentControl.Content = rectangle;
            }
    
            // 绑定最新的数据到 ScrollViewer
            private void scrollViewer_PointerPressed_1(object sender, PointerRoutedEventArgs e)
            {
                Random random = new Random();
                scrollViewer.DataContext = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255)));
            }
        }
    }


    4、演示 RepositionThemeTransition
    Animation/ThemeTransition/Reposition.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Reposition"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <Button Name="btnMove" Content="移动 rectangle" Click="btnMove_Click_1" Margin="0 0 0 10" />
    
                <!--
                    RepositionThemeTransition - 位置改变时的过渡效果
                -->
                <Rectangle Name="rectangle" Width="400" Height="100" Fill="Orange" HorizontalAlignment="Left">
                    <Rectangle.Transitions>
                        <TransitionCollection>
                            <RepositionThemeTransition />
                        </TransitionCollection>
                    </Rectangle.Transitions>
                </Rectangle>
    
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Reposition.xaml.cs

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Reposition : Page
        {
            public Reposition()
            {
                this.InitializeComponent();
            }
    
            // 改变矩形的位置
            private void btnMove_Click_1(object sender, RoutedEventArgs e)
            {
                if (rectangle.Margin == new Thickness(0))
                    rectangle.Margin = new Thickness(100);
                else
                    rectangle.Margin = new Thickness(0);
            }
        }
    }


    5、演示 PopupThemeTransition
    Animation/ThemeTransition/Popup.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Popup"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <!--
                    PopupThemeTransition - 弹出时的过渡效果
                        FromHorizontalOffset - 初始位置的水平偏移量
                        FromVerticalOffset - 初始位置的垂直偏移量
                -->
                <Popup Name="popup" HorizontalOffset="200" VerticalOffset="10" IsLightDismissEnabled="True">
                    <Popup.Child>
                        <Border BorderBrush="Red" BorderThickness="1" Background="Blue" Width="200" Height="200">
                            <TextBlock Text="我是 Popup" FontSize="24.667" HorizontalAlignment="Center" />
                        </Border>
                    </Popup.Child>
                    <Popup.ChildTransitions>
                        <TransitionCollection>
                            <PopupThemeTransition />
                        </TransitionCollection>
                    </Popup.ChildTransitions>
                </Popup>
    
                <Button Name="btnPopup" Content="弹出 Popup" Click="btnPopup_Click_1" Margin="0 10 0 0" />
    
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Popup.xaml.cs

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Popup : Page
        {
            public Popup()
            {
                this.InitializeComponent();
            }
    
            // 显示 Popup
            private void btnPopup_Click_1(object sender, RoutedEventArgs e)
            {
                if (!popup.IsOpen)
                    popup.IsOpen = true;
            }
        }
    }


    6、演示 AddDeleteThemeTransition
    Animation/ThemeTransition/AddDelete.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.AddDelete"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <Button x:Name="btnAddItem" Content="Add Item" Click="btnAddItem_Click_1"/>
                <Button x:Name="btnDeleteItem" Content="Delete Item" Click="btnDeleteItem_Click_1" Margin="0 10 0 0" />
    
                <!--
                    AddDeleteThemeTransition - 添加项或删除项时的过渡效果
                -->
                <ItemsControl x:Name="itemsControl" Margin="0 10 0 0">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapGrid>
                                <WrapGrid.ChildrenTransitions>
                                    <TransitionCollection>
                                        <AddDeleteThemeTransition />
                                    </TransitionCollection>
                                </WrapGrid.ChildrenTransitions>
                            </WrapGrid>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.Items>
                        <Rectangle Width="100" Height="100" Fill="Red" />
                        <Rectangle Width="100" Height="100" Fill="Green" />
                        <Rectangle Width="100" Height="100" Fill="Blue" />
                    </ItemsControl.Items>
                    <ItemsControl.Template>
                        <ControlTemplate>
                            <Border BorderBrush="Orange" BorderThickness="1">
                                <ItemsPresenter Margin="10" VerticalAlignment="Center" HorizontalAlignment="Center" />
                            </Border>
                        </ControlTemplate>
                    </ItemsControl.Template>
                </ItemsControl>
    
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/AddDelete.xaml.cs

    using System;
    using Windows.UI;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Shapes;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class AddDelete : Page
        {
            public AddDelete()
            {
                this.InitializeComponent();
            }
    
            // 添加项
            private void btnAddItem_Click_1(object sender, RoutedEventArgs e)
            {
                Rectangle rectangle = new Rectangle();
                Random random = new Random();
    
                rectangle.Height = 100;
                rectangle.Width = 100;
                rectangle.Fill = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255)));
    
                itemsControl.Items.Add(rectangle);
            }
    
            // 删除项
            private void btnDeleteItem_Click_1(object sender, RoutedEventArgs e)
            {
                if (itemsControl.Items.Count > 0)
                    itemsControl.Items.RemoveAt(itemsControl.Items.Count - 1);
            }
        }
    }


    7、演示 ReorderThemeTransition
    Animation/ThemeTransition/Reorder.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Reorder"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <Button x:Name="btnAddItem" Content="Add Item" Click="btnAddItem_Click_1" />
    
                <!--
                    ReorderThemeTransition - 对集合中的元素重新排序时的过渡效果
                -->
                <ItemsControl x:Name="itemsControl" Margin="0 10 0 0">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapGrid>
                                <WrapGrid.ChildrenTransitions>
                                    <TransitionCollection>
                                        <ReorderThemeTransition />
                                    </TransitionCollection>
                                </WrapGrid.ChildrenTransitions>
                            </WrapGrid>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.Items>
                        <Rectangle Width="100" Height="100" Fill="Red" />
                        <Rectangle Width="100" Height="100" Fill="Green" />
                        <Rectangle Width="100" Height="100" Fill="Blue" />
                    </ItemsControl.Items>
                    <ItemsControl.Template>
                        <ControlTemplate>
                            <Border BorderBrush="Orange" BorderThickness="1">
                                <ItemsPresenter Margin="10" VerticalAlignment="Center" HorizontalAlignment="Center" />
                            </Border>
                        </ControlTemplate>
                    </ItemsControl.Template>
                </ItemsControl>
    
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Reorder.xaml.cs

    using System;
    using Windows.UI;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Media;
    using Windows.UI.Xaml.Shapes;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Reorder : Page
        {
            public Reorder()
            {
                this.InitializeComponent();
            }
    
            // 在集合的位置 2 处添加新的元素,以达到重新排序的效果
            private void btnAddItem_Click_1(object sender, RoutedEventArgs e)
            {
                Rectangle rectangle = new Rectangle();
                Random random = new Random();
    
                rectangle.Height = 100;
                rectangle.Width = 100;
                rectangle.Fill = new SolidColorBrush(Color.FromArgb(255, (byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255)));
    
                itemsControl.Items.Insert(2, rectangle);
            }
        }
    }


    8、演示 PaneThemeTransition
    Animation/ThemeTransition/Pane.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.Pane"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <!--
                    PaneThemeTransition - 基于边缘的较大 UI 滑入和滑出时的过渡效果
                        Edge - 边缘(Left, Top, Right, Bottom)
                -->
                <Popup Name="popup" HorizontalOffset="-120" VerticalOffset="-140" IsLightDismissEnabled="True">
                    <Popup.Child>
                        <Border BorderBrush="Red" BorderThickness="1" Background="Blue" Width="800" Height="200">
                            <TextBlock Text="我是 Popup" FontSize="24.667" HorizontalAlignment="Center" />
                        </Border>
                    </Popup.Child>
                    <Popup.ChildTransitions>
                        <TransitionCollection>
                            <PaneThemeTransition Edge="Top" />
                        </TransitionCollection>
                    </Popup.ChildTransitions>
                </Popup>
    
                <Button Name="btnShowPane" Content="显示 Pane" Click="btnShowPane_Click_1" Margin="0 10 0 0" />
                
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/Pane.xaml.cs

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class Pane : Page
        {
            public Pane()
            {
                this.InitializeComponent();
            }
    
            // 显示 Pane
            private void btnShowPane_Click_1(object sender, RoutedEventArgs e)
            {
                if (!popup.IsOpen)
                    popup.IsOpen = true;
            }
        }
    }


    9、演示 EdgeUIThemeTransition
    Animation/ThemeTransition/EdgeUI.xaml

    <Page
        x:Class="XamlDemo.Animation.ThemeTransition.EdgeUI"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.Animation.ThemeTransition"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
            <StackPanel Margin="120 0 0 0">
    
                <!--
                    EdgeUIThemeTransition - 基于边缘的较小 UI 滑入和滑出时的过渡效果
                        Edge - 边缘(Left, Top, Right, Bottom)
                -->
                <Popup Name="popup" HorizontalOffset="-120" VerticalOffset="-140" IsLightDismissEnabled="True">
                    <Popup.Child>
                        <Border BorderBrush="Red" BorderThickness="1" Background="Blue" Width="200" Height="50">
                            <TextBlock Text="我是 Popup" FontSize="24.667" HorizontalAlignment="Center" />
                        </Border>
                    </Popup.Child>
                    <Popup.ChildTransitions>
                        <TransitionCollection>
                            <EdgeUIThemeTransition Edge="Top" />
                        </TransitionCollection>
                    </Popup.ChildTransitions>
                </Popup>
    
                <Button Name="btnShowEdgeUI" Content="显示 EdgeUI" Click="btnShowEdgeUI_Click_1" Margin="0 10 0 0" />
    
            </StackPanel>
        </Grid>
    </Page>

    Animation/ThemeTransition/EdgeUI.xaml.cs

    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    
    namespace XamlDemo.Animation.ThemeTransition
    {
        public sealed partial class EdgeUI : Page
        {
            public EdgeUI()
            {
                this.InitializeComponent();
            }
    
            // 显示 EdgeUI
            private void btnShowEdgeUI_Click_1(object sender, RoutedEventArgs e)
            {
                if (!popup.IsOpen)
                    popup.IsOpen = true;
            }
        }
    }



    OK
    [源码下载]

  • 相关阅读:
    20212917于欣月 202120222 《网络攻防实践》第十一周作业
    【区块链与隐私保护从入门到精通系列教程】第一篇 区块链基本概念与发展历程
    gRPC三种客户端类型实践【Java版】
    通用池化框架实践之GenericKeyedObjectPool
    所谓测试报告
    通用池化框架commonspool2实践
    module ‘tensorflow‘ has no attribute ‘placeholder‘
    ModuleNotFoundError: No module named ‘tensorflow.contrib‘
    Python虚拟环境
    webrtcvad失败解决办法
  • 原文地址:https://www.cnblogs.com/webabcd/p/3034872.html
Copyright © 2020-2023  润新知