[Telerik]RadDocking第02篇 保存和加载RadDocking的布局

一、演示概述

此演示展示了如何通过RadDocking控件自身所提供的SaveLayout()保存布局信息,以及通过LoadLayout()方法来加载布局信息。如此一来,就可以将用户自定义的布局信息持久化保存到文件中,当用户再次打开应用时,可将布局完好如初的恢复显示。

相关下载(屏幕录像)http://pan.baidu.com/s/1gd6DwDt

在线播放http://v.youku.com/v_show/id_XODcyNjE0Mjg4.html

温馨提示:如果屏幕录像和代码不能正常下载,可站内留言,或发邮件到[email protected]

二、运行效果

效果如下图所示:

三、关键代码

1、保存布局的代码

/// <summary>
/// 将RadDocking的布局信息转换为字符串。
/// </summary>
/// <returns></returns>
private string SaveLayoutAsString()
{
	MemoryStream stream = new MemoryStream();
	this.RadDocking.SaveLayout(stream);

	stream.Seek(0, SeekOrigin.Begin);

	StreamReader reader = new StreamReader(stream);
	return reader.ReadToEnd();
}

2、加载布局的代码

/// <summary>
/// 从字符串中加载RadDocking的布局信息。
/// </summary>
/// <param name="xml"></param>
private void LoadLayoutFromString(string xml)
{
	using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
	{
		stream.Seek(0, SeekOrigin.Begin);
		this.RadDocking.LoadLayout(stream);
	}
}

3、持久化生成的XML

RadDocking的布局持久化生成的字符串,也即为一个XML,内容大致如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RadDocking>
  <DocumentHost>
    <RadSplitContainer>
      <Items>
        <RadPaneGroup SelectedIndex="0">
          <Items>
            <RadPane SerializationTag="LayoutXml"
                     IsDockable="True"
                     Header="Layout Xml" />
            <RadDocumentPane SerializationTag="DocumentPane"
                             IsDockable="True"
                             Title="Document 1"
                             Header="Document 1" />
          </Items>
        </RadPaneGroup>
      </Items>
    </RadSplitContainer>
  </DocumentHost>
  <SplitContainers>
    <RadSplitContainer Dock="DockedLeft"
                       Width="240">
      <Items>
        <RadPaneGroup SelectedIndex="0">
          <Items>
            <RadPane SerializationTag="PaneLeft1"
                     IsDockable="True"
                     Header="Pane Left 1" />
            <RadPane SerializationTag="PaneLeft2"
                     IsDockable="True"
                     Header="Pane Left 2" />
            <RadPane SerializationTag="PaneLeft3"
                     IsDockable="True"
                     Header="Pane Left 3" />
            <RadPane SerializationTag="PaneLeft4"
                     IsDockable="True"
                     Header="Pane Left 4" />
          </Items>
        </RadPaneGroup>
      </Items>
    </RadSplitContainer>
    <RadSplitContainer Dock="DockedRight"
                       Width="240">
      <Items>
        <RadPaneGroup SelectedIndex="0">
          <Items>
            <RadPane SerializationTag="PaneRight1"
                     IsDockable="True"
                     Header="Pane Right 1" />
          </Items>
        </RadPaneGroup>
      </Items>
    </RadSplitContainer>
    <RadSplitContainer Dock="DockedTop"
                       Height="180">
      <Items>
        <RadPaneGroup SelectedIndex="0">
          <Items>
            <RadPane SerializationTag="PaneTop1"
                     IsDockable="True"
                     Header="Pane Top 1" />
          </Items>
        </RadPaneGroup>
      </Items>
    </RadSplitContainer>
  </SplitContainers>
</RadDocking>

四、相关资源

1、Telerik官方帮助文档地址:http://docs.telerik.com/devtools/wpf/controls/raddocking/overview2

时间: 2024-11-04 14:47:05

[Telerik]RadDocking第02篇 保存和加载RadDocking的布局的相关文章

C++从零实现深度神经网络之五——模型的保存和加载以及画出实时输出曲线

本文由@星沉阁冰不语出品,转载请注明作者和出处. 文章链接:http://blog.csdn.net/xingchenbingbuyu/article/details/53704085 微博:http://weibo.com/xingchenbing  一.模型的保存和加载 在我们完成对神经网络的训练之后,一般要把模型保存起来.不然每次使用模型之前都需要先训练模型,对于data hungry的神经网络来说,视数据多寡和精度要求高低,训练一次的时间从几分钟到数百个小时不等,这是任何人都耗不起的.把

一步一步写算法(之排序二叉树的保存和加载)

原文:一步一步写算法(之排序二叉树的保存和加载) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 排序二叉树是我们开发中经常使用到的一种数据结构,它具有较好的插入.删除.查找特性.但是由于二叉树的指针较多,所以相比较其他的数据结构而言,二叉树来得比较麻烦些.但是也不是没有办法,下面介绍一下我个人常用的方法. 我们知道,如果一个二叉树是一个满树的话,那么二叉树的节点应该是按照1.2.3.4依次排开的.但是现实情况是这样的,由于排序二叉树自身

第13章保存和加载你的模型

第13章保存和加载你的模型 在上一章,我们使用keras库学习了怎样训练CNNs.但是,我们注意到,在我们每次想评估网络或测试一批图像时,都需要首先训练它.这在网络模型很深.数据集很大时,将花费巨大时间来训练.那么有没有一种方式在训练完模型后,将它保存在磁盘上,然后在分类新图像时仅仅从磁盘加载就可以? 这种保存和加载一个已训练模型的过程称为模型序列化(model serialization),即本章主要的主题. 1         将一个模型序列化到磁盘上 使用keras库,模型序列化通过对已训

tensorflow教程:变量创建、初始化、保存和加载

变量保存到文件 import tensorflow as tf import numpy as np # Create two variables. x_data = np.float32([1,2,3,4,5,6,7,8,9,0]) weights = tf.Variable(tf.random_normal([10, 1], stddev=0.35), name="weights") biases = tf.Variable(tf.zeros([1]), name="bi

IOS之文件夹创建、删除,图片在本地的保存和加载

本文转自http://blog.csdn.net/toddmi/article/details/8204102 [html] view plaincopy = (NSCachesDirectory, NSUserDomainMask, YES); = [cachePaths objectAtIndex:0]; } [html] view plaincopy = (NSCachesDirectory, NSUserDomainMask, YES); = [cachePaths objectAtIn

Linux驱动模块生成和加载分析

Linux驱动模块生成和加载分析 0x00 Hello World 先奉上本文需要分析的例子,这里以Hello World程序作为例子来分析吧: hello.c #include <linux/init.h> #include <linux/kernel.h> int __init hello_init(void) { printk(KERN_INFO "Hello world!\n"); return 0; } void __exit hello_exit(v

Bitmap那些事之内存占用计算和加载注意事项

前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很多Bitmap的知识.本来之前一直想写一些关于Bitmap的博客,正好这是个机会,因此Bitmap那些事系列博客诞生了.这个系列我会把学习Bitmap的一些知识发布出来供大家参考和交流. 在手机中图片一般都是指Bitmap图片,为什么要说Bitmap呢?因为大家在开发应用的时候,都会使用一些图片来表

存储和加载本地文件(内部存储设备)

Android设备上的所有应用都有一个放置在沙盘中的文件目录,将文件保存到沙盒中可以阻止其他应用的访问. 沙盒目录的全路径为:/data/data/<包名>  用File Explorer查看: 如上图可见,每个应用都在/data/data下有一个以此应用包名命名的文件目录. 而本文就是介绍将文件保存在/data/data/<包名>/files/ 目录下 下面就展示如何在内部存储设备中存储和加载本地文件: 1.创建一个名为 DataStorage的工程 2.准备好布局文件(acti

Android存储和加载本地文件(外部存储设备)

有时候应用需要将数据写入到设备的外部存储上.列如,需要同其他应用或用户共享音乐.图片或者网络下载资料时,保存在外部设备的数据共享起来要比较方便.而且,外部设备通常具有更大的存储空间. 我们可以通过android.os.Environment.getExternalStorageDirectory()方法获取sdCard的路径.再在此路径下创建一个MyFiles的文件,将数据保存在MyFiles文件夹下. 下面就展示如何在外部存储设备中存储和加载本地文件: 1.创建一个名为 DataStorage