C# 如何将画布上的鼠标位置转移到标尺上?

C# 如何将画布上的鼠标位置转移到标尺上?,c#,wpf,C#,Wpf,我有一个带有画布和标尺的WPF应用程序。现在我需要将Canvas OnMouseMove(MouseEventArgs e)传递给标尺,以反映标尺上的鼠标移动。这两个控件都是在初始化时独立创建的,它们彼此不知道。如何将鼠标在画布上的位置转移到标尺上?MouseEventArgs有一种方法,允许您将任何IIInputElement作为参数传递,并返回鼠标指针相对于指定元素的位置。将标尺作为参数值传递。我找到了解决方案,但仍有疑问。在我看来,这有点复杂: 作为“父”控件的画布包含以下代码: 公共点鼠

我有一个带有画布和标尺的WPF应用程序。现在我需要将Canvas OnMouseMove(MouseEventArgs e)传递给标尺,以反映标尺上的鼠标移动。这两个控件都是在初始化时独立创建的,它们彼此不知道。如何将鼠标在画布上的位置转移到标尺上?

MouseEventArgs有一种方法,允许您将任何IIInputElement作为参数传递,并返回鼠标指针相对于指定元素的位置。将标尺作为参数值传递。

我找到了解决方案,但仍有疑问。在我看来,这有点复杂:

  • 作为“父”控件的画布包含以下代码:

    公共点鼠标定位 { 获取{return(Point)GetValue(MousePositionProperty);} set{SetValue(MousePositionProperty,value);} }

    }

  • 标尺包含以下代码:

    公共点位置 { 获取{return(Point)GetValue(PositionProperty);} set{SetValue(PositionProperty,value);} }


  • 谢谢你的帮助,但是你忘了我的控件没有链接。
    public static readonly DependencyProperty MousePositionProperty =
            DependencyProperty.Register("MousePosition", typeof(Point), typeof(DesignerCanvas), new UIPropertyMetadata(point));
    
    protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        MousePosition = e.GetPosition(this);
    
    public static readonly DependencyProperty PositionProperty =
        DependencyProperty.Register("Position", typeof(Point), typeof(HorizontalRuler), new UIPropertyMetadata(defaultMousePoint,
          new PropertyChangedCallback(PositionPropertyChangedCallback)));
    
    private static void PositionPropertyChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        HorizontalRuler horizontalRuler = (HorizontalRuler)sender;
        horizontalRuler.InvalidateVisual();
    }