WPF DockLayoutManager布局后的布局重置
初始化布局
Logging.InfoBiz("初始化布局信息");
dockLayoutManager = new DockLayoutManager();
RestoreLayoutOptions.SetRemoveOldPanels(dockLayoutManager, false);
RestoreLayoutOptions.SetAddNewPanels(dockLayoutManager, true);
dockLayoutManager.DockingStyle = DockingStyle.VS2010;
mainLayout.Children.Add(dockLayoutManager);
保存默认布局
// 保存默认布局
dockLayoutManager.SaveLayoutToStream(defaultDockLayoutStream);
defaultDockLayoutStream.Flush();
恢复布局
var layoutPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "layout.xml");
if (File.Exists(layoutPath))
{
dockLayoutManager.ClosedPanels.Clear();
dockLayoutManager.RestoreLayoutFromXml(layoutPath);
foreach (var panel in dockLayoutManager.ClosedPanels.ToList())
{
dockLayoutManager.DockController.Restore(panel);
}
}
1. 布局重置之前需要关闭活动区域
var docPanel = (DocPanel)((IMainWindow)this).GetActiveDocPanel();
if(docPanel!=null)
{
dockLayoutManager.DockController.Close(docPanel);
}
2. 然后再恢复初始保存的布局
protected void RestoreDefaultDockLayout()
{
var docPanel = (DocPanel)((IMainWindow)this).GetActiveDocPanel();
if(docPanel!=null)
{
dockLayoutManager.DockController.Close(docPanel);
} defaultDockLayoutStream.Seek(0, SeekOrigin.Begin);
dockLayoutManager.RestoreLayoutFromStream(defaultDockLayoutStream);
foreach (var panel in dockLayoutManager.ClosedPanels.ToList())
{
dockLayoutManager.DockController.Restore(panel);
}
}
3. 将布局保存到配置文件
var layoutPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "layout.xml");
dockLayoutManager.SaveLayoutToXml(layoutPath);
4. 切换布局中的活动区域
private void OnWorkspacePanelCommandExecute(object obj)
{
BaseLayoutItem item = null;
if (obj.Equals("1"))
{
item = this.ermlPanel;
}
else if (obj.Equals("2"))
{
item = this.serverPanel;
}
else if (obj.Equals("3"))
{
item = this.diagramPanel;
}
else if (obj.Equals("4"))
{
item = this.stdzPanel;
}
else if (obj.Equals("5"))
{
item = this.outputPanel;
}
else if (obj.Equals("6"))
{
item = this.reviewPanel;
}
else if (obj.Equals("7"))
{
item = this.explrModelSearchPanel;
}
else if (obj.Equals("8"))
{
item = this.naviPanel;
} if (item.Visibility == Visibility.Visible)
{
item.Visibility = Visibility.Collapsed;
}
else
{
item.Visibility = Visibility.Visible;
dockLayoutManager.Activate(item);
}
}
WPF DockLayoutManager布局后的布局重置的更多相关文章
- WPF入门教程系列六——布局介绍与Canvas(一)
从这篇文章开始是对WPF中的界面如何布局做一个较简单的介绍,大家都知道:UI是做好一个软件很重要的因素,如果没有一个漂亮的UI,功能做的再好也无法吸引很多用户使用,而且没有漂亮的界面,那么普通用户会感 ...
- WPF Step By Step 完整布局介绍
WPF Step By Step 完整布局介绍 回顾 上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当 然这些都是本人在实际项目中的 ...
- WPF学习(3)布局
今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...
- C# WPF 左侧菜单右侧内容布局效果实现
原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...
- CSS3初学篇章_7(布局/浏览器默认样式重置)
CSS布局说到布局,就不得不提布局的核心<div>标签,它与其它标签一样,也是一个XHTML所支持的标签,专门用于布局设计的容器标签.在css布局方式中,div 是这种布局方式的核心对象, ...
- WPF初学(一)——布局【良好界面的基础】
由Winform转到WPF的一部分人,很可能忽略掉布局,习惯性的使用固定定位.然而,没有良好的布局,后面界面控件画的再好看,花哨,都不过是鲜花插在牛粪上,很可能始终都是一坨??(呵呵). 闲话少说,首 ...
- WPF学习(一)--布局控件简介
WPF的4种基本布局介绍 1.Grid的布局 这个就没啥特别好说的,其实,基本上复杂的布局,都需要用到Grid. 主要就是对行和列进行进行设置和定义. 1.行表格 列表格: 包含行和列的表格 2.St ...
- WPF笔记(2.7 文字布局)——Layout
原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件:1.TextBlock 最基本的文字控件可以配置5个Font属性.TextWraping属性,&quo ...
- SpriteBuilder改变布局后App运行出错代码排查
原来整个关卡场景放在GameScene.ccb中,后来觉得移到专门的Level.ccb比较好. 移动过后编译运行,只要移动Player的胳膊发射子弹时,Xcode报错: g due to Chipmu ...
- WPF编游戏系列 之一 布局设计
原文:WPF编游戏系列 之一 布局设计 本系列主要使用WPF和C#编写一个简单的小游戏(暂命名XMarket),意在通过该实例进一步学习和体验WPF,也欢迎广大同仁拍砖交流.言归正传,在 ...
随机推荐
- JDBC【4】-- SPI底层原理解析
前面已经讲过SPI的基本实现原理了,demo也基本实现了,再来说说SPI. http://aphysia.cn/archives/jdbcspi 背景:SPI是什么? SPI,即是Service Pr ...
- 销讯通CRM系统如何确保拜访数据的真实有效
销讯通CRM系统如何确保并检查拜访过程数据的真实性,是一个值得深入探讨的课题. 01 在信息化高度发达的今天,我们拥有GPS定位.AI人脸识别等先进技术,这些技术无疑为数据的真实有效性提供了强有力的保 ...
- hello鸿蒙
1. 前言 鸿蒙是一款由华为推出的全生态操作系统(探索 | 华为开发者联盟),最近几年发展势头非常强劲,现在开始,让我们来一起认识他吧. 本文针对鸿蒙基本的开发内容做一次概览性的串联. 咱们学习一款新 ...
- Jackson基本使用教程
目录 如何将一个Json序列化对象封装成为一个Pojo是实体类对象 如何进行序列化与反序列化 如何将数据进行绑定 如何进行泛型数据绑定 如何使用Jackson树模型(将复杂Json手动映射到类型) 使 ...
- 【爬虫】爬虫简单举例(三种写法) 涉及requests、urllib、bs4,re
目录 写法1:requests + re 写法2:urllib + re 方法3:request + bs4 补充.我在发了这篇文章之后,后面又要爬这个论坛.然后我发现我没有认真观察那个网页的源码,所 ...
- QtCreator中pro项目文件格式说明
名称 说明 QT += core gui 添加本项目中需要的模块,影响后面代码文件include的时候自动弹出下拉选择,如果pro文件没有引入该模块则无法自动语法提示,一般打包发布的时候对应动态库文件 ...
- Qt开发经验小技巧181-185
Qt天生就是linux的,从linux开始发展起来的,所以不少Qt程序员经常的开发环境是linux,比如常用的ubuntu等系统,整理了一点常用的linux命令. 命令 功能 sudo -s 切换到管 ...
- WorldWind源码剖析系列:WorldWind瓦片调度策略说明
1 基于源码的分析 首先我们来看WorldWind中摄像头变化相关的几个方法的内部逻辑. 1.1 NltTerrainAccessor. GetElevationAt 方法声明:public over ...
- OpenMMLab AI实战营 第四课笔记
OpenMMLab AI实战营 第四课笔记 目录 OpenMMLab AI实战营 第四课笔记 目标检测与MMDetection 1.什么是目标检测 1.1 目标检测的应用 1.1.1 目标检测 in ...
- milvus操作
java 引入依赖 <dependency> <groupId>io.milvus</groupId> <artifactId>milvus-sdk-j ...