我不相信FlowDocument中有任何方法可以使LineBreak不会真正中断,除非将其取出。您可以选择切换到使用WPF布局或使用附加属性在LineBreak和空Run之间切换。

使用WPF布局

您可以考虑使用WPF布局。像这样的东西:

现在,您只需切换DataTemplates即可轻松切换布局。

使用绑定自动删除LineBreaks

如果你想通过绑定“隐藏”LineBreak,你可以使用附加的“BecomeLineBreak”属性来执行它,当应用于空的Run并设置为true时,将其删除并用LineBreak替换它。

像魔术一样你现在有能力写:

当SomeCondition属性为true时,您的Run将变为LineBreak。

这是代码:

public class LineBreakSwitcher : DependencyObject

{

public static bool GetBecomeLineBreak(DependencyObject obj) { return (bool)obj.GetValue(BecomeLineBreakProperty); }

public static void SetBecomeLineBreak(DependencyObject obj, bool value) { obj.SetValue(BecomeLineBreakProperty, value); }

public static readonly DependencyProperty BecomeLineBreakProperty = DependencyProperty.RegisterAttached("BecomeLineBreak", typeof(bool), typeof(LineBreakSwitcher), new PropertyMetadata

{

PropertyChangedCallback = (obj, e) =>

{

var oldElement = (Inline)obj;

var newElement = (bool)e.NewValue ? (Inline)new LineBreak() : new Run();

newElement.SetBinding(BecomeLineBreakProperty, oldElement.GetBindingExpression(BecomeLineBreakProperty).ParentBindingBase);

var parent = (Paragraph)oldElement.Parent;

parent.Inlines.InsertBefore(oldElement, newElement);

parent.Inlines.Remove(oldElement);

}

});

工作原理:当一个Run上的BecomeLineBreak变为true时,会创建一个新的LineBreak,复制BecomeLineBreak绑定,在Run之前插入LineBreak,然后删除Run。当BecomeLineBreak变为false时,将创建一个新的Run并且整个过程以相反的方式发生。

linebreak_WPF:LineBreak动态启用/禁用相关推荐

  1. Linux动态启用/禁用超线程技术

    转载请注明文章出处:https://tlanyan.me/linux-enable-disable-hyper-threading/ intel的超线程技术能让一个物理核上并行执行两个线程,大多数情况 ...

  2. python 禁用网卡_如何编程实现启用禁用网卡

    展开全部 /***************************************************************************** 演示如何编程6261696475 ...

  3. layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知

    layui 启用禁用 iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You ...

  4. 编程实现启用禁用网卡

    /***************************************************************************** 演示如何编程实现启用禁用网卡 Mady B ...

  5. easyUI combobox启用禁用功能写法

    最开始用的是常规js写法, $(#Id).combobox('disabled'); 发现不可用,研究了好久好久,后面师傅说是不是easyui原本的写法覆盖了常规的js写法,一查,果然有相关的博客写到 ...

  6. Android 启用/禁用蓝牙传输文件功能(不能影响蓝牙耳机听歌)

    修改记录[mt67xx_11.0] 1.启用/禁用蓝牙分享功能 private String setBtEnalbe(boolean enable) {if (enable)mDPM.clearUse ...

  7. Android 启用/禁用通过otg连接T卡功能

    1.调用方法: private String setSDOTGEnable(boolean enable) {if (enable)mDPM.clearUserRestriction(admin, U ...

  8. 程序实现启用/禁用设备(驱动)enable/disable device with windows api

    程序实现启用/禁用设备(驱动)enable/disable device with windows api 分类: CPP2009-09-25 00:16 3914人阅读 评论(5) 收藏 举报 wi ...

  9. USB移动储存设备启用/禁用工具电脑资料防止U盘拷贝防泄漏软件

    功能比较简单,启用/禁用USB移动设备功能,防止电脑U盘拷贝资料泄漏. 已测试,软件能正常禁用/启用移动USB设备加载.

最新文章

  1. deepin更新依赖错误_deepin的踩坑问题与解决方案,以及使用分享(持续更新)
  2. 2021年春季学期-信号与系统-第六次作业参考答案-第九小题
  3. idea 生成sdk,如何安装独立的Android SDK,然后将其添加到Windows上的IntelliJ IDEA?
  4. Remoting Practice Sample
  5. 前后端分离开发,日志应该如何进行记录,在出现问题的时候,方便定位问题
  6. 华为升级鸿蒙体验,华为鸿蒙 HarmonyOS 2.0 发布,教你如何升级体验
  7. ramebufferobject工程说明
  8. BZOJ 1020 安全的航线flight
  9. 物联网入门学什么开发板_物联网入门:如何构建DIY Blynk板
  10. (类比较器)java对比两个相同实体类中属性的值的差异
  11. iperf/LANSpeedTest网络传输速度测试工具
  12. [哲学部分]马克思主义基本原理概论思维导图
  13. HTML5会砸掉iOS和Android的饭碗么?
  14. 教你如何用python制作平面直角坐标系模拟器 python项目小发明 【安安教具】-【数学】-【平面直角坐标系】模拟器
  15. [Go]获取当前时间戳秒/毫秒/纳秒 转成字符串string
  16. Java、JSP网上教务评教管理系统(教学评价系统)
  17. JLink的RTT使用
  18. 关于Win10 64位Cadence16.6中OrCAD Capture CIS导网表出现ERROR无效指针的解决办法
  19. 2019GPLT L2-032 彩虹瓶 (25 分)
  20. python股票数据分析_Python数据分析之股票走势

热门文章

  1. 计算机管理3d设置在哪,nvidia控制面板3D怎么设置玩游戏最好?-电脑自学网
  2. macos中homebrew下载更新太慢的解决
  3. 面试官突然问我什么是后端?我通俗易懂的给他讲清楚了!
  4. 招主播用哪种软件效果比较好
  5. 无意间发现我的一台云服用器中了矿机xmrig的毒,哎!!
  6. 软件开发和产品经理是怎么回事
  7. 国密是什么意思?属于商密还是普密?
  8. zemax迈克尔逊干涉仪_Zemax光学设计实例---迈克耳逊干涉仪的仿真
  9. 无人驾驶感知篇之目标跟踪(十二)
  10. Use Case框图