0

Adornerにあるs にUIElementsをアタッチする次のコードがありますCanvas

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;
            }
}

何らかの理由で、実行時に a をクリックすると、asが見つからないRichTextBoxため、プログラムがクラッシュします。RichTextBoxe.SourceUIElement

selectedElementになりますnull

誰かが理由を教えてください。回避策を教えてください。

4

1 に答える 1

1

どうやらe.SourceDocumentクリックした RichTextBox の です。FlowDocumentから派生していないですUIElement

Parentただし、FlowDocument のプロパティによって RichTextBox にアクセスすることはできます。

if (e.Source is FlowDocument)
{
    selectedElement = ((FlowDocument)e.Source).Parent as UIElement;
}
else
{
    selectedElement = e.Source as UIElement;
}
于 2013-07-22T10:27:03.187 に答える