【.Net码农】分享一款Metro风格的WPFUI
来源:互联网 发布:上传下载网站源码 编辑:程序博客网 时间:2024/06/05 13:26
http://blog.csdn.net/ljf5566/article/details/41598269
实现思路
用到的开源项目MahApps.Metro。具体使用请看官网文档。
主要代码
换肤弹窗
- <!--实现换肤-->
- <Popup x:Name="skinUI" Margin="0" PopupAnimation="Fade" PlacementTarget="{Binding ElementName=btnSkin}"
- StaysOpen="False" SnapsToDevicePixels="True" ClipToBounds="True" AllowsTransparency="True" Placement="Left" VerticalOffset="25">
- <Border x:Name="bdSkin" BorderBrush="{DynamicResource AccentColorBrush}" BorderThickness="1"
- CornerRadius="8" Height="170" Width="450">
- <WrapPanel x:Name="skinPanel"/>
- </Border>
- </Popup>
后台代码
- using MahApps.Metro;
- using MahApps.Metro.Controls;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media;
- namespace UITemplate
- {
- /// <summary>
- /// MainWindow.xaml 的交互逻辑
- /// </summary>
- public partial class MainWindow : MetroWindow
- {
- public MainWindow()
- {
- InitializeComponent();
- btnSkin.Click += (s, e) => skinUI.IsOpen = true;
- skinPanel.AddHandler(Button.ClickEvent, new RoutedEventHandler(ChangeSkin));
- InitSkins();
- }
- /// <summary>
- /// 初始化所有皮肤控件
- /// </summary>
- private void InitSkins()
- {
- var accents = ThemeManager.Accents;
- Style btnStyle = App.Current.FindResource("btnSkinStyle") as Style;
- foreach (var accent in accents)
- {
- //新建换肤按钮
- Button btnskin = new Button();
- btnskin.Style = btnStyle;
- btnskin.Name = accent.Name;
- SolidColorBrush scb = accent.Resources["AccentColorBrush"] as SolidColorBrush;
- btnskin.Background = scb;
- skinPanel.Children.Add(btnskin);
- }
- }
- /// <summary>
- /// 实现换肤
- /// </summary>
- private void ChangeSkin(object obj, RoutedEventArgs e)
- {
- if (e.OriginalSource is Button)
- {
- Accent accent = ThemeManager.GetAccent((e.OriginalSource as Button).Name);
- App.Current.Resources.MergedDictionaries.Last().Source = accent.Resources.Source;
- }
- }
- }
- }
效果图
源码下载:点击打开链接
0 0
- 【.Net码农】分享一款Metro风格的WPFUI
- 分享一款Metro风格的WPFUI
- Win8 Metro UI风格的Web设计资源分享
- metro风格的特点
- 一个Metro风格的开源项目 MahApps.Metro
- 一个Metro风格的开源项目 MahApps.Metro
- 五个Metro UI 风格的网页设计
- win8下metro风格应用程序的生命周期
- Metro 风格的软件界面欣赏
- Metro 风格应用的导航设计
- Metro UI 风格的主题和模板
- 华丽的 Metro 风格小图标
- win8风格(metro)主页的学习
- Windows 8风格的Metro设计
- 基于Bootstrap的Metro风格模板
- Metro风格界面
- metro风格浅谈
- Metro风格界面
- 利用百度地图Android sdk高仿微信发送位置功能
- JAVA字符串的方法
- 1545: 完美变换 BFS (指针标记路径)用Map做标记 (当数组开不下的时候)
- poj 3787 Convex Hull of Lattice Points 求凸包
- ngFormController
- 【.Net码农】分享一款Metro风格的WPFUI
- https基本原理解析
- ios SQlite操作数据库
- hdoj 2059 龟兔赛跑 【经典DP】
- 糊糊悟道--我对平均数的理解
- 使用ThreadMXBean类来编程检测死锁
- 怎么进Google
- 三角形类的构造函数
- 记事本打开 .exe 运行文件,发现所有程序文件都默认记事本打开了怎么解决问题