绑定画布上元素的位置

本文关键字:位置 元素 绑定 | 更新日期: 2023-09-27 18:01:21

我有一个画布(矩形),我画了一个点。当我移动鼠标时,这个点会改变它的位置,但我不仅想改变画布中的位置,还想改变模型中的数据(即2d向量)。

我可以绑定一个点在画布上的位置到我的矢量使用XAML?也许我应该创建一个ValueConverter,但我不知道如何在函数

中获得对画布的引用
public object Convert(object value, Type targetType,
                      object parameter, CultureInfo culture) {
   ...
}

绑定画布上元素的位置

好了,最后我做了以下操作:

我添加一个椭圆作为画布的子,并将其lefttop值绑定到我的模型中的矢量组件。以下是XAML代码:

<Canvas x:Name="MyCanvas" Background="Black" MouseMove="MyCanvas_MouseMove">
  <Ellipse x:Name="PointEllipse" Canvas.Left="{Binding MyVector2D.X, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Canvas.Top="{Binding MyVector2D.Y, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" >
  </Ellipse>
</Canvas>

当我移动鼠标时,我做以下操作:

private void MyCanvas_MouseMove(object sender, MouseEventArgs e)
{
    if (e.LeftButton == MouseButtonState.Pressed)
    {
        var pt = e.GetPosition(MyCanvas);
        PointEllipse.SetValue(Canvas.LeftProperty, pt.X);
        PointEllipse.SetValue(Canvas.TopProperty, pt.Y);
    }
}