初始化布局

            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布局后的布局重置的更多相关文章

  1. WPF入门教程系列六——布局介绍与Canvas(一)

    从这篇文章开始是对WPF中的界面如何布局做一个较简单的介绍,大家都知道:UI是做好一个软件很重要的因素,如果没有一个漂亮的UI,功能做的再好也无法吸引很多用户使用,而且没有漂亮的界面,那么普通用户会感 ...

  2. WPF Step By Step 完整布局介绍

    WPF Step By Step 完整布局介绍 回顾 上一篇,我们介绍了基本控件及控件的重要属性和用法,我们本篇详细介绍WPF中的几种布局容器及每种布局容器的使用场景,当 然这些都是本人在实际项目中的 ...

  3. WPF学习(3)布局

    今天我们来说说WPF的布局.我们知道WinForm的布局主要是采用基于坐标的方式,当窗口内容发生变化时,里面的控件不会随之动态调整,这就造成了一个很不好的用户体验.而WPF为了避免这个缺点,采用了基于 ...

  4. C# WPF 左侧菜单右侧内容布局效果实现

    原文:C# WPF 左侧菜单右侧内容布局效果实现 我们要做的效果是这样的,左侧是可折叠的菜单栏,右侧是内容区域,点击左侧的菜单项右侧内容区域则相应地切换. wpf实现的话,我的办法是用一个tabcon ...

  5. CSS3初学篇章_7(布局/浏览器默认样式重置)

    CSS布局说到布局,就不得不提布局的核心<div>标签,它与其它标签一样,也是一个XHTML所支持的标签,专门用于布局设计的容器标签.在css布局方式中,div 是这种布局方式的核心对象, ...

  6. WPF初学(一)——布局【良好界面的基础】

    由Winform转到WPF的一部分人,很可能忽略掉布局,习惯性的使用固定定位.然而,没有良好的布局,后面界面控件画的再好看,花哨,都不过是鲜花插在牛粪上,很可能始终都是一坨??(呵呵). 闲话少说,首 ...

  7. WPF学习(一)--布局控件简介

    WPF的4种基本布局介绍 1.Grid的布局 这个就没啥特别好说的,其实,基本上复杂的布局,都需要用到Grid. 主要就是对行和列进行进行设置和定义. 1.行表格 列表格: 包含行和列的表格 2.St ...

  8. WPF笔记(2.7 文字布局)——Layout

    原文:WPF笔记(2.7 文字布局)--Layout 这一节介绍的是文字布局的几个控件:1.TextBlock      最基本的文字控件可以配置5个Font属性.TextWraping属性,&quo ...

  9. SpriteBuilder改变布局后App运行出错代码排查

    原来整个关卡场景放在GameScene.ccb中,后来觉得移到专门的Level.ccb比较好. 移动过后编译运行,只要移动Player的胳膊发射子弹时,Xcode报错: g due to Chipmu ...

  10. WPF编游戏系列 之一 布局设计

    原文:WPF编游戏系列 之一 布局设计        本系列主要使用WPF和C#编写一个简单的小游戏(暂命名XMarket),意在通过该实例进一步学习和体验WPF,也欢迎广大同仁拍砖交流.言归正传,在 ...

随机推荐

  1. python语言实现_通过端口转发实现跨网络(多网络之间)通信_science_network

    本文使用python语言实现了一个端口转发的程序,该程序可以实现多网络之间的信息通信,当然这里有个前提,那就是多个网络都在一台主机上有可以连通的端口. 之所以有这个编写代码的需求,是因为最近使用的sc ...

  2. BitLocker驱动器加锁和解锁

    应用场景: 单位配备给你使用的电脑(Win10系统),偶尔也会有其他人使用.你可以设置某一个磁盘为你的私密数据存储空间,只有你输入密码后才能进入磁盘.即使系统重装.硬盘被拆下来挂载到其他机器上,没有密 ...

  3. HTML5 进度条

    1. <progress>标签 进度条 value属性:规定进程的当前值.默认为0 max属性:规定需要完成的值. PS:这里没有最小值设置,或者说最小值一律为0 <progress ...

  4. Astro v5 x DevNow

    先介绍下 DevNow DevNow Github 体验网站 DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论.搜索等功能,欢迎大家体验.同时也支持 Follow ...

  5. docker-compose开机自启动设置

    vi /etc/rc.d/rc.local /usr/local/bin/docker-compose -f /home/seafile/docker-compose.yml up -d 给rc.lo ...

  6. 对象存储COS-数据处理能力升级!“组合拳”助力存储新时代!

    近日腾讯云对象存储(COS)完成了"存储"到"存储+"的升级! 互联网让信息传播的更快,人们仿佛对信息更加渴望,我们身边的产品越来越多,获取信息的类型也丰富多样 ...

  7. 腾讯云 TStor 私有云存储获统信+海光/兆芯官方认证

    腾讯云 TStor 是一款分布式存储产品,致力于解决私有云.混合云下的各类存储需求.产品紧跟国内信创生态,持续加强自主可控能力.目前,TStor 已经支持国内主流国产操作系统和硬件,如中标麒麟操作系统 ...

  8. uniapp开发鸿蒙,是前端新出路吗?

    相信不少前端从业者一听uniapp支持开发鸿蒙Next后非常振奋.猫林老师作为7年前端er也是非常激动,第一时间体验了下.在这里也给大家分享一下我的看法 对于前端开发者而言,几乎无需增加额外的学习成本 ...

  9. 准备好"干翻世界"之前,不妨先听听我们的意见

    期待大家的到来哦~    

  10. .NET 9 中的 多级缓存 HybridCache

    HybridCache是什么 在 .NET 9 中,Microsoft 将 HybridCache 带入了框架体系. HybridCache 是一种新的缓存模型,设计用于封装本地缓存和分布式缓存,使用 ...