WPF应用界面开发入门教程 - 保存和恢复布局基础知识 DevExpressWPF布局控件
DevExpress WPF控件(例如 DXGrid、DXPivotGrid、DXDocking、DXBars 和 DXLayoutControl)允许您将布局信息保存到XML文件或流,保存后,控件的布局可以在需要时恢复。布局信息可能包括控件中可视元素的可见性、位置和大小、它们的外观设置、过滤器、排序、分组和摘要信息等,单个控件提供选项允许您控制应保存哪些设置。
您可以使用以下的方法保存和恢复控件的布局。
1. 要保存嵌套在单个对象(例如,窗口或 BarManager)中的所有可视化可序列化DevExpress控件的布局,请使用 DevExpress.Xpf.Core.Serialization.DXSerializer.Serialize 和 DevExpress.Xpf.Core.Serialization.DXSerializer .反序列化方法。
注意:要通过 DXSerializer 类功能保存和恢复可视化可序列化DevExpress控件的布局,请将控件的 DevExpress.Xpf.Core.Serialization.DXSerializer.DXSerializer.SerializationID 附加属性设置为唯一对象(例如,唯一字符串)。
Serialize 方法将可视化DevExpress控件的布局保存到单个文件中。
注意:DXSerializer类不保存不在可视树中的控件布局。
2. 要保存/恢复单个DevExpress控件的布局,请使用该控件的 SaveLayoutTo... 和 RestoreLayoutFrom... 方法。
例如,DXGrid 提供了 DataControlBase.SaveLayoutToStream, DataControlBase.SaveLayoutToXml, DataControlBase.RestoreLayoutFromStream 和 DataControlBase.RestoreLayoutFromXml 方法。
使用这种方法时,无法将多个控件的布局保存到单个文件中,每个布局必须存储在单独的文件中。
要在窗口即将关闭时保存控件布局,请处理 Window.Closing 事件。 要在加载窗口时恢复布局,请处理 Window.Loaded 事件。
示例
以下代码显示了如何通过 DevExpress.Xpf.Core.Serialization.DXSerializer 类的成员保存和恢复可序列化DevExpress控件的布局:
C#
using DevExpress.Xpf.Core.Serialization; private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { //Save the layout of serializable DevExpress controls starting with the current object (specified by "this"). //If the current object ("this") is also a serializable DevExpress control, its layout is saved as well. DXSerializer.Serialize(this, "c:\\my-app-layout.xml", "applicationName", null); } private void Window_Loaded(object sender, RoutedEventArgs e) { //... DXSerializer.Deserialize(this, "c:\\my-app-layout.xml", "applicationName", null); }
XAML
<Window . . . xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"> <!--Set SerializationID for DevExpress serializable objects--> <dxb:BarManager dx:DXSerializer.SerializationID="myBarManager"> . . . <dxg:GridControl dx:DXSerializer.SerializationID="myGrid"> . . . </dxg:GridControl> </dxb:BarManager> </Window>
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
DevExpress技术交流群4:715863792 欢迎一起进群讨论