基于WPF&Prism&AvalonEdit的XAML轻量编辑器

1. 写在前面

一直从事WPF的相关开发工作,有时为了尝试或演示某些仅仅基于XAML的效果时,但又不想大动干戈打开VS去创建项目,所以一个轻便简单,集编辑与预览于一身的XAML编辑器就显得格外重要。

  • Kaxaml,集编辑与预览,过去一直在使用,但苦于不知何原因,最近频频崩溃,虽然开源有代码可循,但也懒的下载调试;
  • XAML Studio,只能在Win10上使用,且只适用于UWP,被迫放弃。

那么,干脆自己动手,丰衣足食!这样,XAML Viewer诞生了,而且完全开源!

2. 界面预览

非专业美工设计,加上VS的文档编辑结构正合我意,而且个人相对比较中意VS的设计风格,所以就不折磨自己了。

3. 项目构成

        软件主要基于WPF,PrismAvalonEdit,唯一核心代码如下(其他均为锦上添花):

  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

原文地址:https://www.cnblogs.com/smlusm/p/12150358.html

时间: 2024-08-30 01:13:25

基于WPF&Prism&AvalonEdit的XAML轻量编辑器的相关文章

WPF自定义控件与样式(14)-轻量MVVM模式实践

一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. MVVM是WPF中一个非常实用的编程模式,充分利用了WPF的绑定机制,体现了WPF数据驱动的优势.  图片来源:(WPF的MVVM) 关于MVVM网上很多介绍或者示例,本文不多做介绍了,本文的主要目的是提供一个轻量级的View Model实现,本文的主要内容: 依赖通知InotifyPropertyChanged实现: 命

WPF Prism框架下基于MVVM模式的命令、绑定、事件

原文:WPF Prism框架下基于MVVM模式的命令.绑定.事件 Prism框架下的自定义路由事件和命令绑定 BaseCode XAML代码: <Button x:Class="IM.UI.CommandEx.PrismCommandEx" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/wi

基于netty轻量的高性能分布式RPC服务框架forest&lt;下篇&gt;

基于netty轻量的高性能分布式RPC服务框架forest<上篇> 文章已经简单介绍了forest的快速入门,本文旨在介绍forest用户指南. 基本介绍 Forest是一套基于java开发的RPC框架,除了常规的点对点调用外,Motan还提供服务治理功能,包括服务节点的自动发现.摘除.高可用和负载均衡等. 架构概述 Forest中分为服务提供方(RPC Server),服务调用方(RPC Client)和服务注册中心(Registry)三个角色. Server提供服务,向Registry注册

分表需要解决的问题 &amp; 基于MyBatis 的轻量分表落地方案

分表:垂直拆分.水平拆分 垂直拆分:根据业务将一个表拆分为多个表. 如:将经常和不常访问的字段拆分至不同的表中.由于与业务关系密切,目前的分库分表产品均使用水平拆分方式. 水平拆分:根据分片算法将一个表拆分为多个表. 如:按照ID的最后一位以3取余,尾数是1的放入第1个库(表),尾数是2的放入第2个库(表)等. 解决的问题:单纯的分表可以解决数据量过大导致检索变慢的问题. 分表无法解决过多并发请求访问同一个库,导致数据库响应变慢的问题.所以通常水平拆分都至少要采用分库的方式,用于一并解决大数据量

阿里云轻量服务器部署PHP网站简述(基于Lamp)

一:首先登陆阿里云账户购买轻量服务器(这里就不详细介绍啦) 二:进去以后是这样的 然后其他的一些设置参考https://blog.csdn.net/cuiji4724/article/details/81395364(内容如下) 一.介绍环境1.首先进入操控台找到轻量应用服务器(若找不到可以在下方)产品与服务里面搜. 2.进入轻量应用服务器,找到重置系统,应用镜像选择LAMP,系统镜像选择CentOS,点击确认更换 (这里我也进行了应用镜像的更换,但是更换了多次没有成功,还是显示的是WrodPr

轻量、强大的代码编辑器控件-WinForm完美版

前段时间做个小项目需要用到一个代码编辑器控件,但网上搜了半天,居然没发现一个完全满意的编辑器.现有的一些编辑器有: FastedTextBox 优点:1.  轻量. 2. 样式美观. 3. DEMO完整,文档丰富. 缺点:1. 不支持中文/中文字体显示难看 2. 代码折叠只能支持整行. ICSharpCode.AvalonEdit 优点:功能强大,几乎完美,非常接近 VS 缺点:1. 使用 WPF 开发. 2. 在 WinForm 使用不大稳定,比如不能同时开两个窗口,图形错位. 3. 内存多.

推荐轻量友好的.NET测试断言工具Shoudly

Shoudly是一个轻量的断言(Assertion)框架,用于补充.NET框架下的测试工具.Shoudly将焦点放在当断言失败时如何简单精准的给出很好的错误信息. Shouldly在GitHub的开源地址:https://github.com/shouldly/shouldly Shouldly的官方文档:http://docs.shouldly-lib.net/ 为什么要Shoudly? 我们知道通常测试代码中一个断言是这样写的: Assert.That(contestant.Points,

一个轻量系统的诞生

经过几个月的业余时间,为一家公司设计了如下一套简单,轻量的内部管理系统.在这几个月中,基本牺牲了所有的业余时间,不乏晚上加班加点.一个人和工厂讨论需求,提出设计想法,和工厂人员确定这么“整”还是那么“整”,是否可满足具体要求. 然后再回到家进行Coding.... 做该项目的意义何在?其实市场上有很多XX ERP,XXX协同系统.这些系统功能可能很强大,强大到太强而不能用. 最重要的一点是,并不是适合具体公司的业务流程和业务内容. 如果你们公司买了一套系统有可能就是将你公司的管理调整到和要上的系

OWIN轻量型框架介绍

OWIN轻量型框架介绍 阅读目录 引言 框架的特色 如何启动 各项功能 静态路由的3种写法 伪静态路由的支持 处理Form表单提交的文件 流式处理Post请求的数据 多种请求类型自动识别 响应处理 请求响应上下文 自定义默认处理函数 内置各种便捷函数 复合类型的请求处理 框架的扩展 静态内容的支持 跨域Post的支持 基础类型继承灵活处理 尾声 回到顶部 引言 什么是OWIN,我就不介绍了,请自行搜索,这里主要是介绍自行开发的OWIN框架的特点和用法.由于.NET的web框架都比较庞大,导致性能