2011-01-29 7 views
0

나는 이것을 사용하는 대화 형 차트 라이브러리 및 응용 프로그램을 개발 중입니다.WPF Points 데이터 바인딩 문제

ListViewPoints이고 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 클래스이기 때문에, 그녀의 PointsPointCollectionPoint이기 때문에?

필요한 경우 더 많은 코드를 게시 할 수 있습니다.

감사합니다.

답변

1

Point의 x 및 y 구성 요소 대신 Point를 변경하는 결합 된 컨트롤을 만들지 마십시오. 그러면 Point 속성에 바인딩 할 수 있으며 바인딩은 예상대로 작동합니다. 또한 UI가 더 좋을 것입니다.

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

감사합니다. 현재이 문제를 해결할 수있는 방법이 있습니다. 텍스트 상자에서 좌표를 변경하면 내 View 모델이 ListView에서 현재 선택된 인덱스를 기반으로 pointcollection에서 포인트 변경됩니다. 나는 너의 길을 시도 할 것이다. 더 유연하고 멋지게 보입니다. – dEVIANT