我画了一个画布(矩形)。当我移动鼠标时,这个点会改变它的位置,但是我不仅要改变画布中的位置,还要改变模型中的数据(即2d向量)。
我可以使用XAML将画布上某点的位置绑定到我的矢量吗?也许我应该创建一个ValueConverter,但我不知道如何在函数public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
中引用canvas。
感谢。
答案 0 :(得分:0)
好的,最后我做了以下事情。
我添加一个椭圆作为画布的子项,并将其left
和top
值绑定到模型中矢量的组件。这是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);
}
}