linebreak_WPF:LineBreak动态启用/禁用
我不相信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动态启用/禁用相关推荐
- Linux动态启用/禁用超线程技术
转载请注明文章出处:https://tlanyan.me/linux-enable-disable-hyper-threading/ intel的超线程技术能让一个物理核上并行执行两个线程,大多数情况 ...
- python 禁用网卡_如何编程实现启用禁用网卡
展开全部 /***************************************************************************** 演示如何编程6261696475 ...
- layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知
layui 启用禁用 iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You ...
- 编程实现启用禁用网卡
/***************************************************************************** 演示如何编程实现启用禁用网卡 Mady B ...
- easyUI combobox启用禁用功能写法
最开始用的是常规js写法, $(#Id).combobox('disabled'); 发现不可用,研究了好久好久,后面师傅说是不是easyui原本的写法覆盖了常规的js写法,一查,果然有相关的博客写到 ...
- Android 启用/禁用蓝牙传输文件功能(不能影响蓝牙耳机听歌)
修改记录[mt67xx_11.0] 1.启用/禁用蓝牙分享功能 private String setBtEnalbe(boolean enable) {if (enable)mDPM.clearUse ...
- Android 启用/禁用通过otg连接T卡功能
1.调用方法: private String setSDOTGEnable(boolean enable) {if (enable)mDPM.clearUserRestriction(admin, U ...
- 程序实现启用/禁用设备(驱动)enable/disable device with windows api
程序实现启用/禁用设备(驱动)enable/disable device with windows api 分类: CPP2009-09-25 00:16 3914人阅读 评论(5) 收藏 举报 wi ...
- USB移动储存设备启用/禁用工具电脑资料防止U盘拷贝防泄漏软件
功能比较简单,启用/禁用USB移动设备功能,防止电脑U盘拷贝资料泄漏. 已测试,软件能正常禁用/启用移动USB设备加载.
最新文章
- deepin更新依赖错误_deepin的踩坑问题与解决方案,以及使用分享(持续更新)
- 2021年春季学期-信号与系统-第六次作业参考答案-第九小题
- idea 生成sdk,如何安装独立的Android SDK,然后将其添加到Windows上的IntelliJ IDEA?
- Remoting Practice Sample
- 前后端分离开发,日志应该如何进行记录,在出现问题的时候,方便定位问题
- 华为升级鸿蒙体验,华为鸿蒙 HarmonyOS 2.0 发布,教你如何升级体验
- ramebufferobject工程说明
- BZOJ 1020 安全的航线flight
- 物联网入门学什么开发板_物联网入门:如何构建DIY Blynk板
- (类比较器)java对比两个相同实体类中属性的值的差异
- iperf/LANSpeedTest网络传输速度测试工具
- [哲学部分]马克思主义基本原理概论思维导图
- HTML5会砸掉iOS和Android的饭碗么?
- 教你如何用python制作平面直角坐标系模拟器 python项目小发明 【安安教具】-【数学】-【平面直角坐标系】模拟器
- [Go]获取当前时间戳秒/毫秒/纳秒 转成字符串string
- Java、JSP网上教务评教管理系统(教学评价系统)
- JLink的RTT使用
- 关于Win10 64位Cadence16.6中OrCAD Capture CIS导网表出现ERROR无效指针的解决办法
- 2019GPLT L2-032 彩虹瓶 (25 分)
- python股票数据分析_Python数据分析之股票走势