我有一个 Canvas (矩形),我可以在其中画一个点。当我移动鼠标时,该点会更改其位置,但我不仅想更改 Canvas 中的位置,还想更改模型中的数据(即二维向量)。
我可以使用 XAML 将 Canvas 上的点位置绑定(bind)到我的矢量吗?也许我应该创建一个 ValueConverter,但我不知道如何在函数中获取对 Canvas 的引用
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture) {
...
}
最佳答案
好吧,最后我做了以下事情。
我添加一个椭圆作为 Canvas 的子项,并将其 left
和 top
值绑定(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/