2011-01-29 24 views
0

私はインタラクティブなチャートライブラリを開発しています...それを使用するアプリケーション。WPF Pointsデータバインディングの問題

ListViewとのCurrentItemがあります。同じパネルで

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

、私は編集点の座標用の2つのテキストボックスがあります。

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

を私の大きな問題は、Point構造であること、である...ので、それは値渡します。

Xをテキストボックスに変更すると、データバインドは変更されませんPoint

どうすればこの問題を解決できますか?
私はPointクラスを書きますか?Lineクラスなので、彼女のPointsPointCollectionのため、Pointですか?

それが必要なのならば、私はより多くのコードを投稿することができます:)

感謝を。

答えて

1

Pointのxおよびyコンポーネントではなく、ポイントを変更する組み合わせコントロールを作成しないでください。次に、Point-propertyにバインドすると、バインディングは期待通りに機能します。さらに、あなたはおそらくより良いUIを持っています。

UserControlを作成し、2つのテキストボックスを追加し、DependencyProperty-Pointをこのコントロールに追加することができます。テキストボックスの1つの内容が変更されるたびに、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 
+0

ありがとう、現時点では、私は回避策を行っています。私がテキストボックスの座標を変更すると、私のビューモデルは、ListViewで現在選択されているインデックスに基づいてポイントコレクションをポイントします。 私はあなたの方法を試してみるつもりです。それはより柔軟で、より良いようです。 – dEVIANT

関連する問題