分享一款Metro风格的WPFUI
来源:互联网 发布:你瞒我瞒网络歌手 编辑:程序博客网 时间:2024/06/05 07:49
实现思路
用到的开源项目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
- 分享一款Metro风格的WPFUI
- 【.Net码农】分享一款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风格界面
- JSP命题人错误盘点(持续更新)
- jQuery学习之文档(DOM)操作
- leetcode 字符串交织
- HDU5112 A Curious Matt
- 杭电OJ(HDOJ)1005题:Number Sequence(规律递推)
- 分享一款Metro风格的WPFUI
- 【map&pair】#81 A. Transmigration
- 适合屌丝企业的网络推广方法
- Matlab自定义函数的几种方法
- 如何杀死tomcat进程
- Apache安全配置
- 求最短路径Dijkstra算法C++
- swift_the basics
- HDU 2052