WPF指向数据绑定问题

时间:2011-01-29 11:34:30

标签: wpf data-binding points

我正在开发使用它的交互式图表库...和应用程序。

在申请中,我有ListView Points CurrentItem

public Point CurrentPoint
  {
   get { return myCurrentPoint; }
   set
   {
    myCurrentPoint = value;
    base.OnPropertyChanged("CurrentPoint");
   }
  }

在同一个面板上,我有两个用于编辑点坐标的文本框:

<TextBox Text="{Binding CurrentPoint.X, Mode=TwoWay}" 
       Grid.Column="1" Grid.Row="0" Width="80" Margin="5"/>

我的大问题是,Point是一个结构......所以它是通过价值传递的。

如果我在文本框中更改X坐标...它不会更改数据绑定Point

我该如何解决这个问题呢? 我是否应该编写自己的Point课程和Line课程,因为她Points PointCollection Point

如果需要,我可以发布更多代码:)

感谢。

1 个答案:

答案 0 :(得分:1)

为什么不创建一个组合控件来更改Point而不是Point的x和y组件。然后,您可以绑定到您的Point - 属性,绑定将按预期工作。此外,你可能有一个更好的用户界面。

您可以创建UserControl,添加两个文本框并向此控件添加DependencyProperty - Point。每当其中一个文本框的内容发生更改时,请将Point - 属性设置为其新值。

public class PointInputBox : UserControl{

  public static readonly DependencyProperty PointProperty =
    DependencyProperty.Register("Point", typeof(Point), typeof(PointInputBox), new FrameworkPropertyMetadata(new Point(0,0),FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));


  public Point Point {
    get { return (Point)GetValue(PointProperty); }
    set { SetValue(PointProperty, value); }
  }

  // Add here event handlers for changes of your input boxes and set 
  //  the Point-value accordingly