当前位置:   article > 正文

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

wpf 菜单栏图标大小 icon

原文 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/758454
推荐阅读
相关标签
  

闽ICP备14008679号