2014-09-12 4 views
0

저는 누군가가 저에게 올바른 방향으로 걷어차기를 바라고 있습니다. 저는 현재 WPF와 MVVM을 배우고 있습니다. 평범하지 않았다고합시다. 기본적으로 DataContext의 속성에 액세스하고 내보기의 속성에 바인딩하려고합니다. 나는 완전히 솔직해질 것입니다. 나는 약간 혼란스러워합니다.보기에서 DataContext 속성에 액세스

사용자가 해당 버튼을 클릭하면 아래 코드가 실행됩니다.

private void OnReceiptClick(object sender, RoutedEventArgs e) 
    { 
     var dialogBox = new DisplayReceiptView(((CheckMemberViewModel) this.DataContext).ReceiptViewModel); 
     dialogBox.ShowDialog(); 
    } 

현재 CheckMemberViewModel에는 'Person'속성이 있습니다.이 단계에서 DataContext는 예상대로 채워집니다.

내 DisplayReceiptView 뒤에 코드는 다음과 같습니다

public DisplayReceiptView(ReceiptViewModel context) : this() 
    { 
     this.DataContext = context; 
    } 

다시 한번 모든 것이 올바른 것 같다

, 그리고 마지막으로 내 XAML에 나는 불행하게도 상관없이 내가 무슨 짓을했는지

<Grid DataContext="{Binding Path=Person}"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="10"/> 
      <ColumnDefinition Width="150"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="10" /> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Label Grid.Column="1" Grid.Row="1">Name:</Label> 
     <TextBox Grid.Column="2" Grid.Row="1" Text="{Binding Path=Person.Forename}"></TextBox> 
     </Grid> 

이 없다, 그리고 내가 지금까지 내가 가장 가까이에 있었는지, 데이터가 구속력이없는 것 같아. 아래는 속성에 대한 내 ViewModel 코드입니다.

 private Person _person; 
     public Person Person 
    { 
     get { return _person; } 
     set 
     { 
      if (value != _person) 
      { 
       _person = value; 
       OnPropertyChanged("Person"); 
      } 
     } 
    } 

모든 도움을 주시면 감사하겠습니다. 이미 사람에 바인딩으로

답변

1
<TextBox Grid.Column="2" Grid.Row="1" Text="{Binding Path=Person.Forename}"></TextBox> 

이 원본에 변경 사항을 저장하고 변경 내용을 검색합니다

<TextBox Grid.Column="2" Grid.Row="1" Text="{Binding Forename, Mode=TwoWay}"></TextBox> 

이 필요하지만, 물론 당신 것

<TextBox Grid.Column="2" Grid.Row="1" Text="{Binding Forename}"></TextBox> 

모두가 잘못 컨텍스트 변경 내용을 저장하여 영구 보존해야합니다.

+0

동의 - 일반적으로 ABCD에 바인딩하지 않습니다. 여기서 ABCD는 속성 및 하위 속성 체인 데이터 소스를 A.B.C로 설정 한 다음 체인의 마지막 속성 인 D에 바인딩합니다. 알림은 해당 속성에만 있습니다. – Dean

관련 문제