gpt4 book ai didi

wpf - 确定 WPF RichTextBox 中选定的 InlineUIContainer

转载 作者:行者123 更新时间:2023-12-03 04:58:48 26 4
gpt4 key购买 nike

我想确定 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 插入符位置发生变化时工作。

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

提前致谢

马特

最佳答案

如果您的 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");
}
}
}
}
}

关于wpf - 确定 WPF RichTextBox 中选定的 InlineUIContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com