none
如何使WPF的控件风格保持一致? RRS feed

  • 问题

  • 我正在做一个WPF桌面应用程序,现在遇到一个问题比较棘手:

    我用的是win10系统,我在WPF程序中,精心设计的主界面(扁平化风格),放在winXP/win7/win8下几乎面目全非,具体的表现是:

    WPF在win10中的控件风格是win10的风格,文本框/按钮/datagrid/listbox/combobox等控件都是扁平化的风格,而在winXP/win7/win8下,控件风格大大不同,有明显的3D边框,项目选中颜色也不一样,滚动条也是3D风格的,


    我之前写过silverlight(web端)程序,在silverlight中所有控件都是silverlight运行时画的,跟系统无关,但WPF控件风格随系统的不同而有明显的变化,那么我在win10下设计的WPF界面放到winXP/win7/win8下就很难看,如何避免这个问题?


    或者说,如何把win10下的WPF风格保留在程序中,以便不随系统变化而变化,
    2017年2月25日 10:26

答案

  • 您好。

          由于WPF的控件调用了系统底层的图形api,所以靠主题文件打包,实现不了您需要的效果,只能自己重新开发一套自定义的控件主题来模拟win10的外观,也可以使用第三方控件,如telerik等。


    周雪峰

    2017年2月27日 8:50
    版主

全部回复


  • Hi  jesse hao,

    每个系统中,对于界面的样式处理会有不同,根据你的情况,我建议你使用资源文件来同一设置界面或者其他控件的样式。这样,在不同的系统中能最大程度的保证界面的同一性。

    你可以参考下面的文章。

    WPF窗口模板——Style样式:
    http://blog.csdn.net/xwlyun/article/details/42676329

    或者也可以考虑一些三方的样式。

    Bootstrap WPF Style,Bootstrap风格的WPF样式 :
    http://www.cnblogs.com/tsliwei/p/6138412.html

    注意:此回复包含对第三方万维网站点的引用。 Microsoft提供此信息为您提供方便。 Microsoft不控制这些网站,并且未测试在这些网站上找到的任何软件或信息; 因此,Microsoft不能对任何软件或信息的质量,安全性或适用性做任何表示。 使用互联网上发现的任何软件都有固有的危险,Microsoft警告您在从互联网检索任何软件之前,要确保您完全理解风险。

    Best Regards,

    Yohann Lu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年2月27日 2:26
    版主
  • 多谢您的回答,我不知道能不能达到这样的效果:
    获取到win10下的WPF的theme.xaml资源文件,然后内置到wpf程序中,这样能实现吗?因为win10的WPF主题风格真的很好看,
    2017年2月27日 7:29
  • 您好。

          由于WPF的控件调用了系统底层的图形api,所以靠主题文件打包,实现不了您需要的效果,只能自己重新开发一套自定义的控件主题来模拟win10的外观,也可以使用第三方控件,如telerik等。


    周雪峰

    2017年2月27日 8:50
    版主