WPF richTextBox无法识别为UIElement

本文关键字:UIElement 识别 richTextBox WPF | 更新日期: 2023-09-27 18:24:07

我有以下代码,它将Adorner s附加到Canvas上的UIElement s。

private void slideCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
  {
                selected = false;
                if (selectedElement != null)
                {
                    aLayer.Remove(aLayer.GetAdorners(selectedElement)[0]);
                    selectedElement = null;
                }
            }
            if (e.Source != slideCanvas)
            {
                _isDown = true;
                _startPoint = e.GetPosition(slideCanvas);
                selectedElement = e.Source as UIElement;
                _originalLeft = Canvas.GetLeft(selectedElement);
                _originalTop = Canvas.GetTop(selectedElement);
                aLayer = AdornerLayer.GetAdornerLayer(selectedElement);
                aLayer.Add(new ResizingAdorner(selectedElement));
                selected = true;
                e.Handled = true;
            }
}

然而,由于某种原因,当我在运行时单击RichTextBox时,程序崩溃,因为e.Source找不到RichTextBox作为UIElement

CCD_ 8将只是CCD_ 9。

有人能告诉我为什么吗?请给我一份工作?

WPF richTextBox无法识别为UIElement

显然e.Source是您单击的RichTextBox的Document。它是一个FlowDocument,不是从UIElement派生的。

但是,您可以通过FlowDocument的Parent属性访问RichTextBox。

if (e.Source is FlowDocument)
{
    selectedElement = ((FlowDocument)e.Source).Parent as UIElement;
}
else
{
    selectedElement = e.Source as UIElement;
}