确定 WPF RichTextBox 中选定的 InlineUIContainer

2023-12-02

我想确定 WPF RichTextBox 中当前插入符位置是否存在 InlineUIContainer (或 BlockUIContainer)。

目前我有一个 RichTextBox 如下;

    <RichTextBox SelectionChanged="RichTextBox_SelectionChanged">
        <FlowDocument>
            <Paragraph>
                <Run>Some text before</Run>
                <InlineUIContainer>
                    <Label>I am a label</Label>
                </InlineUIContainer>
                <Run>Some text after</Run>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

在 SelectionChanged 事件中我尝试使用;

rtf.CaretPosition.GetAdjacentElement(rtf.CaretPosition.LogicalDirection)

...返回 null。

我可以使用 MouseDoubleClicked 事件处理程序来完成此操作,如下所示;

Point pos = e.GetPosition(rtf);
TextPointer pointer = rtf.GetPositionFromPoint(pos, false);
Console.WriteLine(pointer.GetAdjacentElement(pointer.LogicalDirection));

但我真的很想让它在 RichTextBox 插入符位置发生变化时工作。

我有什么办法可以实现这个目标吗?

提前致谢

Matt


如果您的 InlineUIContainer 被赋予了 x:Name 属性,您可以使用以下代码专门查找它:

if (rtf.Selection.Contains(myInlineUIContainer.ContentStart))
{...}

为了更动态的发现,你需要一个像这样的循环:

foreach (Block block in rtf.Document.Blocks)
        {
            Paragraph p = block as Paragraph;
            if (p != null)
            {
                foreach (Inline inline in p.Inlines)
                {
                    InlineUIContainer iuic = inline as InlineUIContainer;
                    if (iuic != null)
                    {
                        if (rtf.Selection.Contains(iuic.ContentStart))
                        {
                            Console.WriteLine("YES");
                        }
                    }
                }
            }
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定 WPF RichTextBox 中选定的 InlineUIContainer 的相关文章

随机推荐

  • VBA 中的 while 循环

    我的数据如下表所示 该数据集中的观察数量每个月都有所不同 列保持不变 我想在每一行中循环我的代码 直到该行为空 我认为 do while 循环是合适的 但到目前为止我还没有成功执行它 值得注意的是 我是一个完全的 VBA 新手 其他一些注意
  • 如何获取两个日期时间之间的小时和分钟差异

    如果我有两个这样的日期时间 transtime in transtime out 如何以以下格式获取这些日期时间之间的差异 hh mm I use DATEDIFF hour transtime in transtime out 但我只得到
  • 使用 InvokeScript 更改 C# 变量

    我需要检查 Windows Phone 应用程序中的 WebBrowser 控件是否有历史记录 我想出的方法是使用browser InvokeScript eval if history length gt 0 history go 1 我
  • 一次更新两个表

    我的 MySQL 版本使用的是 5 1 41 3ubuntu12 10 UPDATE profiledata SET aboutyou aboutyou quotes quotes WHERE uid sess uid and UPDATE
  • 如何使用OpenFeign获取pojo数组?

    我正在尝试使用 OpenFeign 客户端访问 API 获取一些 JSON 并将其转换为 POJO 数组 以前我只是简单地获取一串 JSON 并使用 Gson 将其转换为数组 如下所示 FeignInterface String get R
  • 如何在ASP.NET中实现实时更新

    我见过几个网站向您展示数据库中发生的情况的实时更新 一个例子可以是 实时显示股票价格的股票行情网站 显示诸如 其他用户当前正在搜索什么 之类的数据 我认为这将涉及某种轮询机制 每隔几秒钟查询数据库并将其呈现在网页上 但当我从性能的角度思考时
  • D3 生成的 LinearGradient 在 Firefox/IE 中不起作用

    我正在开发一个 D3 库 它将 D3 与 AngularJS 指令集成在一起 称为角D3 最近的指令之一允许生成可以绑定到数据并动态更新的梯度 这似乎适用于除 Firefox 之外的所有浏览器 但是 如果我将输出 SVG 复制 粘贴到 JS
  • 在 Dialogflow 中使用 NodeMailer

    我想发送一封电子邮件 要求在 Dialogflow 中制作的程序中进行操作 我想使用 NodeMailer 但是当我部署项目时 出现以下错误消息 您的云函数部署失败 函数加载错误 无法加载文件index js 中的代码 您是否列出了所有必需
  • Java SQL 时间戳到 ZonedDateTime

    我想将 ZonedDateTime 对象转换为 java sql Timestamp 对象 而不使用本地日期 例如 假设我有以下日期时间 System out println myZonedDateTime gt 2018 09 02T23
  • ASP.NET PostBack 选择树视图的复选框

    我有一个 asp net 项目并使用 C 工作 在我的项目中 我有一个带有复选框的数据绑定列表框 例如 当用户单击复选框时 它应该更新标签 文本框 问题是 它不会更新标签 文本框 直到我单击执行回发的按钮 我将如何调用复选框更改事件的回发
  • OpenGL 顶点数组对象存储顶点缓冲区名称和索引,还是仅存储索引?

    创建后 VAO 是否仅跟踪 VBO 索引 通过glBindVertexBuffer 或者哪些 VBO 名称与这些索引绑定 如果我使用指定绑定索引 例如 0glVertexAttribBinding在 VAO 创建期间 我可以在绘制调用之前将
  • 类型错误:列表索引必须是整数,而不是元组,出了什么问题[重复]

    这个问题在这里已经有答案了 Python 新手 求助 为什么我收到此错误 类型错误 列表索引必须是整数 而不是元组 imheight for i in range 0 len tables for j in range 0 len tabl
  • 匿名内部类中的接口如何工作?

    interface MyInter public void display class OuterClass8 public static void main String arg MyInter mi new MyInter public
  • 无法让 Django 提供静态文件

    我知道 SO 上有很多类似的线程 实际上有同样的问题 但我无法解决我的问题 Django版本 gt gt gt import django gt gt gt print django get version 1 6 2 我想从模板访问静态文
  • 如何将 jQuery 事件处理程序附加到 YouTube 电影?

    编辑 对那些已经回答的人表示抱歉 在我睡眠不足的状态下 我忘记了这种特殊情况是 YouTube 电影 而不是 JW FLV 播放器 我可以看到有更多关于与 YouTube 电影交互的文档 所以我会继续研究 但也欢迎提供更多信息 我正在使用
  • while 循环确定输入的值是否为 double

    我正在做一个相当大的项目 这只是包含在其中 基本上 我创建了一个获取员工信息的类 我们需要它 以便用户必须输入双倍的工资率 说 8 点 注意用户不能添加美元符号 例如 8 00 否则会提示用户发生错误 然而 当我测试运行代码时 代码没有使用
  • 如何格式化 Ansible 输出

    我想格式化 Ansible 输出 my local SUCCESS rc 0 gt gt 116G my local2 SUCCESS rc 0 gt gt 116G to my local gt gt 116G my local2 gt
  • 服务器如何因 chmod 777 而变得容易受到攻击?

    我经常读到类似这样的文章 chmod 777 很糟糕 我想知道 当我执行时我如何变得脆弱chmod 777在一个文件上 我可以重现的真实世界示例是什么 It 允许文件系统内容查看和 或修改由任何人 假设攻击者已经具有通用系统访问权限 这在共
  • 如何在Python中以指定位数的二进制字符串形式返回数字

    可能是一个愚蠢的问题 但是在 python 中是否有一种简单的方法可以自动用零将数字填充到固定长度 我在 python 文档中找不到这个 但我可能还不够努力 e i 我希望 bin 4 返回 00100 而不仅仅是 100 是否有一种简单的
  • 确定 WPF RichTextBox 中选定的 InlineUIContainer

    我想确定 WPF RichTextBox 中当前插入符位置是否存在 InlineUIContainer 或 BlockUIContainer 目前我有一个 RichTextBox 如下