c# - 绑定(bind) Canvas 上元素的位置

标签 c# wpf canvas binding ivalueconverter

我有一个 Canvas (矩形),我可以在其中画一个点。当我移动鼠标时,该点会更改其位置,但我不仅想更改 Canvas 中的位置,还想更改模型中的数据(即二维向量)。

我可以使用 XAML 将 Canvas 上的点位置绑定(bind)到我的矢量吗?也许我应该创建一个 ValueConverter,但我不知道如何在函数中获取对 Canvas 的引用

public object Convert(object value, Type targetType,
                      object parameter, CultureInfo culture) {
   ...
}

最佳答案

好吧,最后我做了以下事情。

我添加一个椭圆作为 Canvas 的子项,并将其 lefttop 值绑定(bind)到模型中向量的组件。这是 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);
    }
}

关于c# - 绑定(bind) Canvas 上元素的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23406977/

相关文章:

c# - 存储从套接字读取的数据以供另一个线程读取的最有效方法是什么?

c# - 格式化 - 添加逗号,2 位小数到单元格值 vb.net excel interop

javascript - 在 Canvas 中使用 CSS 字体不适用于 Angular 2

javascript - HTML Canvas : mouse click hit test by using ghost canvas - anti-aliasing troubles

javascript - 尝试在 Bootstrap 模式中动态生成图表,出现 offsetWidth 错误

c# - C#中如何在URL中传递值

c# - .Net 的 LINQ 中存在错误,或者我遗漏了什么?

c# - WPF:如何以编程方式从 ScrollViewer 中提取滚动条?

c# - WPF - 帮助将 XAML 绑定(bind)表达式转换为代码隐藏

c# - 如果我有一个 TextBox 是 Checkbox 的子项,是否可以输入破折号?