为什么WPF在不同版本的Windows上呈现不同?

时间:2013-05-01 19:46:49

标签: wpf rendering

我读到WPF使用DirectX来执行渲染,它不依赖于WinForms用来渲染控件的恐龙库。

所以我用WPF创建了我的Presentation层,它在Win8下看起来应该是这样的。

然后我将项目部署到Windows Server 2003 ...以发现我漂亮的小自定义消息框看起来非常像WinForms,有点笨重;按钮控件非常类似于WinForms控件,扩展器控件不再显示为带圆圈的^箭头,看起来像是在1998年绘制的(在一个丑陋的方形平面按钮上显示^箭头当鼠标悬停在它上面时弹出。)

来自C#2010中的 Pro WPF 圣经:

  

WPF的部分承诺是,您无需担心特定硬件的细节和特性。 WPF足够智能,可以在可能的情况下使用硬件优化,但它具有所有内容的软件回退。 因此,如果您在使用旧版视频卡的计算机上运行WPF应用程序,界面仍将按您设计的方式显示

那么,这是谎言吗?对我而言,因为它不是以我设计的方式出现

如果没有,那么无论运行它的机器如何,为什么/如何渲染相同的东西呢? 软件回退以某种方式设计来模仿Win32 / GDI渲染吗?有没有办法让我的小自定义消息框在Win8和WinServer2K3上看起来相同?

1 个答案:

答案 0 :(得分:4)

这与DirectX /渲染/显卡/其中任何一项都没有关系。

和WPF一起从Windows主题中获取所有UI元素的DEFAULT外观。

如果您不想要这种行为,则必须为所有UI元素类型提供StylesTemplates,否则就会找到在应用程序中包含PresentationFramework.Aero.dll的方法并将其用作默认主题库。

查看this answer