【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定?...
这几天一直有人问我如何保存RichTextBox的文本到数据库,包括格式等等,然后需要的再从数据库取出来,并且显示到RichTextBox中。
其实,RichTextBox的文本是一个FlowDocument类型的对象,我们只需要利用XamlReader和XamlWriter就能很好的完成上述工作。
【保存Document到流】
FlowDocument document = richTextBox.Document;
Stream s = new MemoryStream(); // 其他的什么Stream类型都没问题
XamlWriter.Save(document, s);
// 拿到s之后,再转化成二进制数据写到数据库就OK了
byte[] data = new byte[s.Length];
s.Position = 0;
s.Read(byte, 0, s.Length);
s.Close();
// 拿着data干啥都行
// ……
【从数据库中读取】
// data是从数据库中读出来的二进制数据
Stream s = new MemoryStream(data);
FlowDocument doc = XamlReader.Load(s) as FlowDocument;
s.Close();
richTextBox.Document = doc;
PS:有人问过我如何对RichTextBox的Document属性做绑定,由于RichTextBox的Document属性不是一个DependencyProperty,
所以我采用的是继承RichTextBox,自己定义一个BindableDocument的DependencyProperty来做。
{
public FlowDocument BindableDocument
{
get { return (FlowDocument)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
// Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("BindableDocument", typeof(FlowDocument), typeof(BindableRichTextBox), new UIPropertyMetadata(null, new PropertyChangedCallback(OnTextPropertyChanged)));
private static void OnTextPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
BindableRichTextBox textBox = sender as BindableRichTextBox;
if (textBox != null)
{
textBox._changeFromBinding = true;
textBox.OnTextPropertyChanged(e);
}
}
// 防止死锁,比如A变了通知B,B变了又通知A
private bool _changeFromBinding = false;
// 当BindableDocument属性变化时,通知Document属性
protected virtual void OnTextPropertyChanged(DependencyPropertyChangedEventArgs e)
{
if (_changeFromBinding)
{
this.Document = e.NewValue as FlowDocument;
}
}
// 当Document属性变化时,通知BindableDocument属性
protected override void OnTextChanged(TextChangedEventArgs e)
{
base.OnTextChanged(e);
if (!_changeFromBinding)
{
this.BindableDocument = this.Document;
}
// 放到外面
_changeFromBinding = false;
}
}
做了个小程序,绑定了一个TextBox的Text到RichTextBox。 下载
转载于:https://www.cnblogs.com/RMay/archive/2008/07/22/1248905.html
【WPF】如何保存RichTextBox的文本到数据库?以及如何对RichTextBox的Document做绑定?...相关推荐
- Java的ATM界面任务台选择同时有文本和数据库登陆注册
< Java项目实训>课程设计报告题目: ATM取款机JAVA实训课程设计 下载点这 运行视频如下: Java的ATM界面任务台选择同时有文本和数据库登陆注册 摘要 我选择的是" ...
- Autohotkey全选复制并保存剪切板文本至以时间命名的文本文件
AutoHotKey实现全选复制并保存剪切板文本至以时间命名的文本文件 一键保存当前页面的文字为文本文件 一键保存当前页面的文字为文本文件 借用AutoHotKey软件编写的一小段代码实现 按组合快捷 ...
- spring aop 自定义注解配合swagger注解保存操作日志到mysql数据库含(源码)
spring aop 自定义注解保存操作日志到mysql数据库 一.思路 二.自定义注解 三.编写操作日志 四.编写操作日志切面\增强 五.使用 六.`注意` 一.思路 利用spring aop 对方 ...
- 邮件合并发送html,邮件合并HTML格式文本从数据库到Word文档
我正在做一个邮件合并使用来自SQL数据库的数据集. ,我取回存储在数据库中有一些HTML标记的数据,例如:邮件合并HTML格式文本从数据库到Word文档 我的一个合并域的包含这样的文字: Bullet ...
- java 农历的编写保存数据批量插入到数据库中
java 农历的编写保存数据批量插入到数据库中 1.阴历转农历的工具类 public class Nongli {private static int monCyl, dayCyl, yearCyl; ...
- 数据库的这些性能优化,你做了吗
转载自 数据库的这些性能优化,你做了吗 在互联网项目中,当业务规模越来越大,数据也越来越多,随之而来的就是数据库压力会越来越大. 我们可能会采取各种方式去优化,比如之前文章提到的缓存方案,SQL优 ...
- 数据库MySQL(课下作业,必做)
数据库MySQL(课下作业,必做) 题目要求: 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入 ...
- 阿里云数据库专家王颜培:我做MySQL云原生这些年
三年前,我从淘系业务线转到阿里云数据库团队做MySQL产品.三年过去了,MySQL产品从几十万节点规模发展到百万节点规模,从非云原生的技术架构成功转型到云原生架构.阿里集团是一个巨大的练兵场,一个新的 ...
- html保存blob,HTML文本图像并保存为Blob到数据库
我已将富文本转换为图像并将其保存为数据块. Blob从本地服务器(WINDOWS)创建,但部署到应用程序服务器(LINUX).图像格式(字体,清晰度)发生了变化.我不知道我必须做什么.请说明一下.这是 ...
最新文章
- java 组合框_Java知多少(88)列表和组合框
- android区块链 钱包_区块链研究实验室|从Android调用区块链智能合约
- 如何锁定计算机硬盘,Win7系统怎么锁住磁盘|Win7系统锁住磁盘的详细步骤
- sqlserver导出带数据的脚本文件
- C#如何生成缩略图、水印
- 计算机专业伦理总结,《计算机伦理学》节译实践报告
- 如何使能linux vivid
- .NET6下周发布真的香,可不少人却只会.NET Framework!
- IntelliJ IDEA 2018.2 发布,支持 Java 11
- java7和java8切换_仍不切换到Java 8的6个理由
- 给Android程序员的一些面试建议,附带学习经验
- ie 传递给系统调用的数据区域太小。_RFID银行资产管理系统,智能,简便,易操作...
- String、Object、包装类的常用方法以及注意点
- 9.UNIX 环境高级编程--进程关系
- LIBSVM使用方法及参数设置
- flask:小项目(医生与病人)
- 【DT调研】关于BIM + GIS的相关知识了解
- 前端开发框架、工具汇总清单
- APP运营如何实现流量变现,获取更高收益?
- 元认知能力---反思能力
热门文章
- Magento: 自定义用户登录导向页面 Redirect Customer to Previous Page After Login
- WordPress 不用插件实现对长文章进行分页
- C/C++——一个因为unsigned引发的大问题
- 【latex】最后一页 参考文献不平衡 左右不对齐
- Kubernetes—动态存储卷配置(StorageClass资源)(十二)
- 【C++基础学习】《C++ Primer》中的“有序型”
- TreeView控件的基本使用 界面篇 winform
- 演练 小米商城 手机版块 0920
- web标准三个要素 此标准的好处
- 网页浏览器 市面上存在的网页浏览器