基于WPF&Prism&AvalonEdit的XAML轻量编辑器
1. 写在前面
一直从事WPF的相关开发工作,有时为了尝试或演示某些仅仅基于XAML的效果时,但又不想大动干戈打开VS去创建项目,所以一个轻便简单,集编辑与预览于一身的XAML编辑器就显得格外重要。
- Kaxaml,集编辑与预览,过去一直在使用,但苦于不知何原因,最近频频崩溃,虽然开源有代码可循,但也懒的下载调试;
 - XAML Studio,只能在Win10上使用,且只适用于UWP,被迫放弃。
 
那么,干脆自己动手,丰衣足食!这样,XAML Viewer诞生了,而且完全开源!
2. 界面预览
非专业美工设计,加上VS的文档编辑结构正合我意,而且个人相对比较中意VS的设计风格,所以就不折磨自己了。

3. 项目构成
软件主要基于WPF,Prism,AvalonEdit,唯一核心代码如下(其他均为锦上添花):
Element = XamlReader.Parse(content) as FrameworkElement;
- XamlDesigner:Prism模块,提供XAML预览功能;
 - XamlEditor:Prism模块,提供XAML编辑功能,提供智能提示喔,虽然比不上VS的全面强大,但一般使用足以;
 - XamlService:主要用于定义Prism的Event及Command;
 - XamlTheme:提供样式相关的控件或辅助类;
 - XamlUtil:提供通用的算法之类的;
 - XamlViewer:主项目,除上述之外的集大成者。
 
4. 文档管理
- 支持新建,打开,保存,关闭,拖动等操作;
 - 支持预览与编辑面板位置交换操作;
 - 支持在Active Files下拉列表中针对已打开的文件进行快速选择。
 
注意:在关闭软件时,只会自动保存已经存储在本地的文档,请务必在此之前,将需要保留的临时文档保存到本地。
5. 自动编译
- Auto-Compile 勾选框,开启或关闭自动编译功能,但手动编译[F5],一直生效;
 - Auto-Compile Delay 滑块,在无任何输入的指定时间后自动执行编译。
 
6. 第三方控件库的引用
[Setting] >> [Reference] >> [Add]: 添加自定义控件库,可以在XAML中直接引用其中控件。
- 1. 当前软件基于.Net Framework 4.5,只要系统中包含.Net Framework 4.X(X >= 5),即可引用基于4.0--4.X任意版本的控件库;
 - 2. 引用自定义控件库时,请按照以下形式声明命名空间:
 
xmlns:controls="clr-namespace:MyControl.Controls;assembly=MyControl"
7. 写在最后
由于只是个人利用闲暇时间编写,精力有限,有些地方未必测试到位,代码也稍显简陋,注释欠缺,所以,在使用的过程中,若遇到各种各样的问题,对哪块代码理解不清的,或有更好的建议的,都可以在Github上进行反馈,我看到后会尽量回应,请大家多多支持。
代码可以使用VS2012及以上版本进行编译,目前基于.Net Framework 4.5,后续有时间的话,我会调整为多目标编译,增加.Net Core 3.0。
Github地址如下:https://github.com/huangjia2107/XamlViewer
基于WPF&Prism&AvalonEdit的XAML轻量编辑器的更多相关文章
- 一个基于原生JavaScript开发的、轻量的验证码生成插件
		
Vcode.js 一个基于原生JavaScript开发的.轻量的验证码生成插件 V: 1.0.0 DEMO:https://jofunliang.github.io/Vcode.js/example. ...
 - vue-calendar 基于 vue 2.0 开发的轻量,高性能日历组件
		
vue-calendar-component 基于 vue 2.0 开发的轻量,高性能日历组件 占用内存小,性能好,样式好看,可扩展性强 原生 js 开发,没引入第三方库 Why Github 上很多 ...
 - 基于Node和Electron开发了轻量版API接口请求调试工具——Post-Tool
		
Electron 是一个使用 JavaScript.HTML 和 CSS 构建桌面应用程序的框架. 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 Java ...
 - WPF自定义控件与样式(14)-轻量MVVM模式实践
		
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. MVVM是WPF中一个非 ...
 - vscode+MinGW+cmake设置轻量ide
		
本地随手写一些题目的时候,发现visual studio非常庞大emmm vscodevscode是一个轻量编辑器 (1)vscode插件与设置自动同步 在两个电脑上,用vscode可以同步插件 ,利 ...
 - Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器
		
最近在业余时间玩玩树莓派,刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚,从而控制LED发光二极管的闪烁,后来觉得,是不是可以使用HTML5+jQuery等流 ...
 - 基于netty轻量的高性能分布式RPC服务框架forest<下篇>
		
基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开 ...
 - 基于netty轻量的高性能分布式RPC服务框架forest<上篇>
		
工作几年,用过不不少RPC框架,也算是读过一些RPC源码.之前也撸过几次RPC框架,但是不断的被自己否定,最近终于又撸了一个,希望能够不断迭代出自己喜欢的样子. 顺便也记录一下撸RPC的过程,一来作为 ...
 - vue-swiper 基于Vue2.0开发 轻量、高性能轮播插件
		
vue-swiper 基于 Vue2.0 开发,基本满足大部分功能 轻量.高性能轮播插件.目前支持 无缝衔接自动轮播.无限轮播.手势轮播 没有引入第三方库,原生 js 封装,打包之后只有 8.2KB ...
 
随机推荐
- 2018-8-10-添加右键使用-SublimeText-打开
			
title author date CreateTime categories 添加右键使用 SublimeText 打开 lindexi 2018-08-10 19:16:52 +0800 2018 ...
 - 【SDOI2015】bzoj3990 排序
			
A. 排序 题目描述 输入格式 输出格式 一行,一个整数,表示可以将数组A从小到大排序的不同的操作序列的个数. 样例 样例输入 3 7 8 5 6 1 2 4 3 样例输出 6 数据范围与提示 对于3 ...
 - APICloud ajax请求api数据问题
			
云编译开启全局加密的情况下,请务必使用api.ajax,避免使用JQ等框架的ajax,否则将引起请求失败.官网API说明链接 还要就是要注意用$.ajax请求数据时会出现的同源策略问题.
 - SpringBoot-provider-JPA Not a managed type 问题分析及解决办法
			
spring boot jpa-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法 JPA实体类没有被扫描到,导致这样的情况有 ...
 - H3C路由器SSH服务配置命令
 - Android Studio(九):引用jar及so文件
			
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
 - 在SuperSocket中启用TLS/SSL传输层加密
			
关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate SuperSocket 支持传输层加密(TLS/SSL) SuperSocket 有自动的对TLS ...
 - 浏览器间CSS样式兼容问题
			
1.display:table居中显示 在chrome和safari浏览器上兼容问题 2.滤镜 在chrome浏览器中能正常显示,在360浏览器中不能正常显示 3.省略号问题 对于一行显示,基本上对所 ...
 - 2019-10-30-C#-dotnet-core-局域网组播方法
			
title author date CreateTime categories C# dotnet core 局域网组播方法 lindexi 2019-10-30 9:0:48 +0800 2019- ...
 - Python--day63--添加书籍
			
添加书籍的代码: