【.Net码农】分享一款Metro风格的WPFUI
2015-03-31 22:47
169 查看
/article/9650119.html
实现思路
用到的开源项目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;
}
}
}
}
效果图
源码下载:点击打开链接
相关文章推荐
- 分享一款Metro风格的WPFUI
- 分享一款基于Windows Phone 7的Metro样式的Silverlight主题
- 分享一款基于Windows Phone 7的Metro样式的Silverlight主题
- 分享一个Metro风格的程序
- lav点搜网metro风格分享
- 使用.net ,打造一款类似 Chrome 风格的 TabControl
- 分享一款由杨中科老师主讲的javascript视频教程,属于.NET课程是视频教程
- [.Net码农]分享非常漂亮的WPF界面框架源码及插件化实现原理
- 幸运28源码下载.NET版完整版程序大气的黄色系风格幸运28程序源码安装教程
- 分享二个.net开源的论坛
- Qt StyleShett 实现 Metro 风格之 - QPushButton
- 【.Net码农】File Class
- 一分钟将你的WPF应用程序变身成炫彩动态Metro风格
- PHP编程风格规范分享
- 最近写了一些关于.net中js操作的通用函数,希望和大家分享 2
- 大家好,今天给大家分享一款编辑器:sublime text2
- 用.NET编程风格实现Ajax——Atlas快速入门
- 10套华丽的 Windows 8 Metro 风格图标【2000+免费图标】
- 【.Net码农】利用Lambda获取属性名称
- 2009 .NET技术大会图文分享