当前位置:  开发笔记 > 编程语言 > 正文

确定WPF RichTextBox中选定的InlineUIContainer

如何解决《确定WPFRichTextBox中选定的InlineUIContainer》经验,为你挑选了1个好方法。

我想确定在WPF RichTextBox中当前的Caret位置是否有InlineUIContainer(或BlockUIContainer).

目前我有一个RichTextBox如下;

    
        
            
                Some text before
                
                    
                
                Some text after
            
        
    

在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插入位置发生变化时,我真的很想让它工作.

有什么办法可以实现吗?

提前致谢

马特



1> witters..:

如果您的InlineUIContainer被赋予ax: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");
                        }
                    }
                }
            }
        }

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有