C# WPF过渡效果实现(C# WPF Material Design UI: Transitions)
时间如流水,只能流去不流回!
点赞再看,养成习惯,这是您给我创作的动力!
本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。
阅读导航:
- 一、先看效果
- 二、本文背景
- 三、代码实现
- 四、文章参考
- 五、代码下载
一、先看效果
窗体移动

两个界面过渡效果

二、本文背景
YouTube Design com WPF 大神处习得,闹钟与新增闹钟界面切换效果。
三、代码实现
3.1 添加Nuget库
站长使用.Net Core 3.1创建的WPF工程,创建“Transitions”解决方案后,需要添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors,上图的效果是使用该控件库实现的,非常强大。

3.2 工程结构

3.3 App.xaml添加MD控件样式
添加4个样式
<Application x:Class="Transitions.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Transitions"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml"/>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Indigo.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
3.4 主窗体
MainWindow.xaml代码如下
<Window x:Class="Transitions.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Transitions"
mc:Ignorable="d"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
Title="" Height="600" Width="1080" ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
FontFamily="Microsoft YaHei UI Light"
WindowStyle="None" MouseDown="Window_MouseDown">
<Grid>
<materialDesign:Transitioner SelectedIndex="0" AutoApplyTransitionOrigins="True">
<Grid>
<local:UserControlAlarms/>
</Grid>
<materialDesign:TransitionerSlide>
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe/>
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:SlideWipe Direction="Right"/>
</materialDesign:TransitionerSlide.ForwardWipe>
<local:UserControlNewAlarm/>
</materialDesign:TransitionerSlide>
</materialDesign:Transitioner>
</Grid>
</Window>
简单讲解:
1)需要先添加MD控件命名空间
xmlns:materialDesign=”http://materialdesigninxaml.net/winfx/xaml/themes”
2)设置无边框窗体样式并拖动
ResizeMode="NoResize"
WindowStartupLocation="CenterScreen"
FontFamily="Microsoft YaHei UI Light"
WindowStyle="None" MouseDown="Window_MouseDown"
窗体拖动方法
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
DragMove();
}
3)设置闹钟列表用户控件和新增闹钟用户控件动画排版
默认显示闹钟列表用户控件local:UserControlAlarms,动画切换时显示新增闹钟用户控件local:UserControlNewAlarm
<materialDesign:Transitioner SelectedIndex="0" AutoApplyTransitionOrigins="True">
<Grid>
<local:UserControlAlarms/>
</Grid>
<materialDesign:TransitionerSlide>
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe/>
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:SlideWipe Direction="Right"/>
</materialDesign:TransitionerSlide.ForwardWipe>
<local:UserControlNewAlarm/>
</materialDesign:TransitionerSlide>
</materialDesign:Transitioner>
3.5 闹钟列表用户控件
代码简单,就是简单展示
<UserControl x:Class="Transitions.UserControlAlarms"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Transitions"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<materialDesign:ColorZone Grid.Row="0" Mode="Dark" VerticalAlignment="Stretch"
HorizontalAlignment="Stretch" VerticalContentAlignment="Stretch">
<TextBlock Text="闹钟" FontSize="50" Margin="80" VerticalAlignment="Center"/>
</materialDesign:ColorZone>
<Button Style="{DynamicResource MaterialDesignFloatingActionButton}"
Command="{x:Static materialDesign:Transitioner.MoveNextCommand}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Grid.Row="0" Grid.RowSpan="2" Margin="20">
<materialDesign:PackIcon Kind="AddAlarm"/>
</Button>
<ListView Grid.Row="2" Margin="10">
<ListViewItem Opacity="0.5">
<Grid Width="300">
<StackPanel>
<TextBlock FontSize="30">05:01</TextBlock>
<TextBlock FontSize="30" Opacity="0.8">关闭</TextBlock>
</StackPanel>
<ToggleButton HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10"/>
</Grid>
</ListViewItem>
<ListViewItem Opacity="0.5">
<Grid Width="300">
<StackPanel>
<TextBlock FontSize="30">05:01</TextBlock>
<TextBlock>晴 | 7点48分后响铃</TextBlock>
</StackPanel>
<ToggleButton IsChecked="True" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10"/>
</Grid>
</ListViewItem>
</ListView>
</Grid>
</UserControl>
3.6 新增闹钟用户控件
代码也不多,简单控件布局
<UserControl x:Class="Transitions.UserControlNewAlarm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Transitions"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="200"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<materialDesign:ColorZone Mode="PrimaryMid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalContentAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Style="{DynamicResource MaterialDesignHeadlineTextBlock}" Margin="15"
VerticalAlignment="Bottom" FontSize="30">新闹钟</TextBlock>
</Grid>
</materialDesign:ColorZone>
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Right" Margin="20">
<Button Style="{DynamicResource MaterialDesignFlatButton}" Margin="5"
Command="{x:Static materialDesign:Transitioner.MovePreviousCommand}"
HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="取消"/>
<Button Margin="5"
Command="{x:Static materialDesign:Transitioner.MovePreviousCommand}"
HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="保存"/>
</StackPanel>
</Grid>
</UserControl>
四、文章参考
建议直接打开大神视频学习,他的YouTube上还有很多代码视频哦,参考:
Design com WPF: https://www.youtube.com/watch?v=Bt9swbh_Wfw 。
五、代码下载
文章中代码几乎已经全部贴出,就是这么多。
除非注明,文章均由 Dotnet9 整理发布,欢迎转载。
转载请注明本文地址:https://dotnet9.com/6711.html
欢迎扫描下方二维码关注 Dotnet9 的微信公众号,本站会及时推送最新技术文章(微信公众号“dotnet9_com”):
如有收获,请大力转发,给Dotnet9赞助和支持,谢谢大家对dotnet技术的关注和支持 。
C# WPF过渡效果实现(C# WPF Material Design UI: Transitions)的更多相关文章
- Freebie: Material Design UI Kit
点这里 Following the guidelines laid out by Google, this free UI kit has been designed so that you can ...
- Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验
Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高 ...
- Material Design UI Widgets
Android L 开发者预览支持库提供两个新的Widgets,RecyclerView和CardView.使用这两个Widgets可以显示复杂的Listview和卡片布局,这两个Widgets默认使 ...
- C# WPF抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- Jquery之家5个顶级Material Design框架
谷歌Material Design在如今的前端页面设计中非常流行.Material Design的设计风格向我们展示了一个简单而有内涵的现代UI设计方案. Material Design是如此的简洁美 ...
- 开发Google Material Design风格的WPF程序
今天在网上看到了一个Material Design风格的WPF皮肤,看上去还是挺不错的 这个项目是开源的,感兴趣的朋友可以下载试下: https://github.com/ButchersBoy/Ma ...
- Open-source Tutorial - Material Design for WPF UI
安装 Material Design Themes 通过 NuGet 包管理器搜索自动安装 通过 NuGet 包管理器控制台手动安装 Install-Package MaterialDesignThe ...
- 在 WinForm/WPF 下制作 Google Material Design 风格程序
国内社区没有,顺手转.WinForm: https://github.com/IgnaceMaes/MaterialSkin演示:https://www.youtube.com/watch?v=A8o ...
- C# WPF之Material Design自定义颜色
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF之Material Design自定义颜色 阅读导航 本文背景 代码实现 本文参考 ...
随机推荐
- FastDFS 配置文件 storage.conf
FastDFS 版本5.05 配置文件分为三部分 控制器:tracker.conf存储器:storage.conf 客户端:client.conf 文件位置:/etc/fdfsstorage.co ...
- [Redis-CentOS7]Redis列表操作(三)
LPUSH添加列表 127.0.0.1:6379> LPUSH websites www.baidu.com (integer) 1 LRANGE 获取全部值 127.0.0.1:6379> ...
- android系统webview使用input实现选择文件并预览
一般系统的实现方式: 代码实现 <!doctype html> <html> <head> <meta charset="utf-8"&g ...
- GNU make doc - 6.6 追加变量值
有时我们需要对已经定义过的变量进行追加,可以使用+=进行这一操作,就像下面这样 objects += another.o 该语句取objects变量的值,并在其后追加another.o(结果会在原变量 ...
- [Contract] Solidity address payable 转换与数组地址
address payable --> address address payable addr1 = msg.sender; address addr2 = addr1; // 隐式转 a ...
- pikachu-不安全的文件下载和上传
一.文件下载漏洞 1.1 概述 很多网站都会提供文件下载的功能,即用户可以通过点击下载链接,下载到链接所对应的文件.但是,如果文件下载功能设计不当,则可能导致攻击者可以通过构造文件路径,从而获 ...
- JS中this的几种情况
1.给元素的某个事件行为绑定方法,事件触发,方法执行,此时方法中的this一般都是当前元素本身: <div id="div"></div> div.oncl ...
- 谈谈:这次疫情对一个普通iOS开发者的影响!
“2019年已经很难了,2020年开局0-5那就更难了啊!”大家应该都很清楚,这次疫情对于国家的整体经济体系影响非常大,但是要说有多大,我也不了解,毕竟我只是个程序员!但是对iOS开发者影响有多大,我 ...
- 菜鸟linux
//查看系统中文件的使用情况 df -h //查看当前目录下各个文件及目录占用空间大小 du -sh *//查看当期端口使用情况netstat -tlpn //find命令详见--https://ww ...
- C# WPF聊天界面(3/3)
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF聊天界面(3/3) 阅读导航 本文背景 代码实现 本文参考 1.本文背景 系列文章 ...
