使WPF程序应用预置的控件风格, 如Aero, Luna, Royale, Classic等

本文介绍如何在WPF程序中自定义主题,通过引用特定的程序集并添加资源字典来实现个性化控件外观,以适应不同Windows主题需求。包括设置Aero、Classic、Luna和Royale等主题的例子,并强调了正确引用相关Assembly的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     WPF预设有Aero, Classic, Luna, Royale主题, WPF程序会根据Windows主题决定WPF程序所使用的控件风格, 而且当Windows主题不是Aero, Luna或Royale, 而是其他主题的话, WPF将会采用比较丑的Classic主题, 那我怎么让WPF程序使用指定的主题呢?

     其实很简单, 下面实例如何设定为Aero主题:
     在WPF项目中添加PresentationFramework.Aero.dll这个引用, 然后在程序的Resources中加入
    <Application.Resources>
        
<ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35;component/themes/aero.normalcolor.xaml" />
    
</Application.Resources>
      这相当于把PresentationFramework.Aero程序集中的空间风格代码引用到当前程序中.
      注意, 项目必须引用主题对应的Assembly, 比如PresentationFramework.Aero.dll, PresentationFramework.Royale.dll等等, 它们可以在"Program Files\Reference Assemblies\Microsoft\Framework\v3.0" 或者 GAC中找到.
      上面的XAML代码也可以使用相应的C#代码代替, 比如在Application的Startup事件处理函数中加入代码:
    protected override void OnStartup(StartupEventArgs e)
    {
        
base.OnStartup(e);
        Uri aero 
= new Uri("/PresentationFramework.Aero, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35;component/themes/aero.normalcolor.xaml", UriKind.Relative);
        Resources.MergedDictionaries.Add(Application.LoadComponent(aero) 
as ResourceDictionary); 
    }
      当然也可以在Window的Resources中加入这个ResourceDictionary, 那样就只会在这个Window中采用此主题.

      要指定其他主题的方法也差不多, 也就是引用相关dll和添加Resources. WPF中的Aero主题和Windows Vista里的Aero主题控件风格完全一样, 包括譬如MouseEnter时的动画效果, 下面是在启用了Luna Element 4 视觉效果的Windows 2003系统运行的使用了Aero主题的WPF程序截图:



但WPF里的Aero主题在非Windows Vista系统是没有玻璃效果的.. 那不是GDI就能做到的东西..
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值