我从2008年3月开始使用WPF/Silverlight开发,这几年来我学到了很多东西,我打算分享一些WPF/Silverlight开发***实践,希望这些技巧在你编辑XAML代码时能有所帮助。
在XAML文件中不要使用无用的xmlns命名空间,这样会导致Silverlight页面加载时间过长。不要在单个XAML页面中增加多个相同的命名空间,这样会破坏XAML代码的可维护性,运行时多次加载相同名称的命名空间可能会引起各种内存问题。
为xmlns命名空间前缀使用合适的名字,例如,xmlns:commonControls就比xmlns:cctrl更有意义,这样可以避免将来命名空间的多次声明。Xmlns命名空间的前缀中尽量避免使用local,***用localControls或localConverters代替,在相同的程序集中可能有两个或多个命名空间(如Controls或Converters等),在这种情况下,使用合适的前缀名将有助于正确区别它们。
当增加一个无元素的控件时,***使用自闭合标签“/>”关闭,不要使用硬关闭标签“</tag>”,这样XAML代码看起来会更清爽。如果资源没有被使用,***移除这些不必要的资源键,它们会消耗更多的内存,你可能会因此遇到很多恼人的问题,如果你后面会使用到它们,你可以随时来添加它们。
不要使用额外的面板(如Grid,StackPanel,Canvas等)。如果你需要使用其它面板,首先应该尝试Grid,Grid拥有灵活的UI布局,对调整应用程序大小很有用。不要企图给Silverlight页面中的所有控件起一个名字,因为在加载时会创建一些不必要的对象,只需要为那些后面将会用到的控件起一个名字即可,如果你在使用MVVM模式,你可以移除几乎所有控件的名字。
使用控件的Visibility属性代替Opacity属性隐藏内容,Opacity属性值设为0虽然可以起到隐藏作用,但内存占用和UI空间占用是不会减少的,相反,Visibility属性会释放内存和UI空间,因此可以将有限的空间放置其它控件。在XAML代码中使用正确的格式,这样会使代码更好看,也更易于维护。
尽可能为XAML增加注释,当过了很久你再查看这些代码时,你才能想起当初这样写的动机,此外,如果是多人协作,合理的注释会减少其他人员的代码阅读和理解时间,促进协作生产力的提高。使用StaticResource代替DynamicResource,首先它会提升性能,其次在开发时可以跑出异常信息,有利于调试。
移除不需要的样式。如果你想跨应用程序共享你的样式,***在单独的文件中添加你的样式,如果只针对某个特殊的页面,***在页面资源文件中添加它们。