WPF: 针对Windows 8优化菜单栏和工具栏

本文探讨了WPF在Windows 8环境下的菜单栏和工具栏优化技巧,包括调整菜单图标大小、改进禁用状态下的图标显示效果,并提供了解决.NET 3.x版本下界面风格不一致的方法。

原文 WPF: 针对Windows 8优化菜单栏和工具栏

 

返回目录

1. 关于菜单图标大小

也就是MenuItem中的Icon属性问题。

在.NET 4.x下,无论Icon的大小是什么样的,图标总会遵循菜单的大小:

image

而在.NET 3.x下,如果不进行缩放,Icon会保持原图片大小,如下图:

image

因此为了在.NET 3.x中显示正常大小的图标,需要在声明Image时设置它的大小,这个大小本来在.NET 4.x中是不会影响图标实际大小的。

但是新的问题来了,如果程序运行在Windows 8下,图标会去应用这个大小,但是图标本身不会根据菜单实际大小而进行缩放,比如把图片大小设置成25,结果会是这样:

image

可以看到,Image本身大小会是25,但是却被因菜单大小而被裁掉(即便是设置Image的Stretch属性为Fill也不会起作用)。这个问题已经引起的许多开发者的注意,参考这个BUG汇报

所以,为了能在.NET 3.x,和.NET 4.x + Windows 8环境下正确显示MenuItem的图标大小,请设置Image大小为菜单图标的标准大小:16 * 16

 

返回目录

2. 关于IsEnabled和工具栏图标

当菜单中的MenuItem的IsEnabled为False后,MenuItem的图标颜色会变淡。

但是工具栏中的按钮图片不会这样,可以手动通过Style的Trigger来判断IsEnabled属性,如果为False的话,设置Opacify属性。

比如这样:

<Style TargetType="Image">

    <Setter Property="Width" Value="27"/>

    <Setter Property="Height" Value="27"/>

    <Style.Triggers>

        <Trigger Property="IsEnabled" Value="False">

            <Setter Property="Opacity" Value="0.5" />

        </Trigger>

    </Style.Triggers>

</Style>

这样被禁用的按钮就一目了然了:

image

 

返回目录

3. 针对.NET 3.x的菜单栏和工具栏外观

在Windows 8下,如果应用程序运行在.NET 3.0或3.5下,那么菜单栏和工具栏会是这个样子:

image

菜单栏背景色是渐变的,工具栏背景色是纯白。和Windows 8的风格有些不搭配。

 

解决方案是最好设置app.config,使针对.NET 3.x的应用程序可以运行在Windows 8中默认的.NET 4.5环境下,这样设置app.config:

<?xmlversion="1.0" encoding="utf-8"?>

<configuration>

  <startup>

    <!-- 支持.NET 4.0/4.5 -->

    <supportedRuntimeversion="v4.0"/>

    <!-- 支持.NET 3.0/3.5 -->

    <supportedRuntimeversion="v2.0.50727"/>

  </startup>

</configuration>

OK,完成后再次运行程序,这样看起来就更有Windows 8的感觉了。

image

作者:Mgen
出处:www.cnblogs.com/mgen
其他参考页面:我的软件和工程博客导读

posted on 2013-12-13 20:45 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3473789.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值