2011-01-29 92 views
0

我正在开发交互式图表库和使用它的应用程序。WPF积分数据绑定问题

在应用程序中,我有一个ListViewPointsCurrentItem

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班,因为她PointsPointCollectionPoint

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

感谢。

回答

1

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

您可以创建UserControl,添加两个文本框并向此控件添加DependencyProperty-Point。每次其中一个文本框的内容发生变化时,将Point-property设置为其新值。

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 
+0

谢谢,目前,我为它做了一个解决方法。如果我在文本框中更改坐标,我的视图模型会根据ListView中当前选定的索引更改pointcollection中的Point。 我会尝试你的方式。它看起来更灵活,更好。 – dEVIANT 2011-01-29 12:01:06