目录
返回目录
也就是MenuItem中的Icon属性问题。
在.NET 4.x下,无论Icon的大小是什么样的,图标总会遵循菜单的大小:
而在.NET 3.x下,如果不进行缩放,Icon会保持原图片大小,如下图:
因此为了在.NET 3.x中显示正常大小的图标,需要在声明Image时设置它的大小,这个大小本来在.NET 4.x中是不会影响图标实际大小的。
但是新的问题来了,如果程序运行在Windows 8下,图标会去应用这个大小,但是图标本身不会根据菜单实际大小而进行缩放,比如把图片大小设置成25,结果会是这样:
可以看到,Image本身大小会是25,但是却被因菜单大小而被裁掉(即便是设置Image的Stretch属性为Fill也不会起作用)。这个问题已经引起的许多开发者的注意,参考这个BUG汇报。
所以,为了能在.NET 3.x,和.NET 4.x + Windows 8环境下正确显示MenuItem的图标大小,请设置Image大小为菜单图标的标准大小:16 * 16!
返回目录
当菜单中的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>
这样被禁用的按钮就一目了然了:
返回目录
在Windows 8下,如果应用程序运行在.NET 3.0或3.5下,那么菜单栏和工具栏会是这个样子:
菜单栏背景色是渐变的,工具栏背景色是纯白。和Windows 8的风格有些不搭配。
解决方案是最好设置app.config,使针对.NET 3.x的应用程序可以运行在Windows 8中默认的.NET 4.5环境下,这样设置app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<!-- 支持.NET 4.0/4.5 -->
<supportedRuntime version="v4.0"/>
<!-- 支持.NET 3.0/3.5 -->
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
OK,完成后再次运行程序,这样看起来就更有Windows 8的感觉了。