【问题标题】:C# WPF bind position of an element on canvasC# WPF 在画布上绑定元素的位置
【发布时间】:2014-05-01 11:43:02
【问题描述】:

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

我可以使用 XAML 将画布上点的位置绑定到我的矢量吗?也许我应该创建一个ValueConverter,但我不知道如何在函数public object Convert(object value, Type targetType, object parameter, CultureInfo culture)中获取对画布的引用。

谢谢。

【问题讨论】:

标签: c# wpf canvas binding ivalueconverter


【解决方案1】:

好的,最后我做了以下。

我添加一个椭圆作为画布的子元素,并将其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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多