2012-01-13 2 views
2

시나리오 : 앱의 기본 페이지에서 시작합니다. 하위 페이지 A로 이동하여 값을 변경하고 뒤로 버튼을 누르면 기본 페이지의 바운드 TextBlock이 변경되지 않습니다. 하위 페이지 B로 이동하면 해당 바인딩을 사용하는 TextBlock이 변경됩니다. 마찬가지로 페이지 A로 다시 이동하면 변경된 값이 표시됩니다. 앱을 종료하면 기본 페이지에 새 값이 표시됩니다. 새로 고침이 실행되지 않는 뒤로 버튼을 사용할 때뿐입니다.MVVM-Light를 사용하여 다시 탐색에서 바인딩 새로 고침

모든 INotifyPropertyChanged 항목이 작동합니다. 내가 말했듯이 바인딩은 메인 페이지로 다시 돌아 다니는 것 외에 모든 시나리오에서 작동합니다. 해당 페이지의 바인딩을 새로 고치는 방법이나 메시지를 보내려면 어떻게해야합니까? 감사!

편집 : willmel에서 허용 대답을 기반으로

, 여기에 내가 무슨 짓을했는지 :

<TextBlock Text="{Binding Title, Mode=OneWay}" /> 

내 MainViewModel.cs 파일 :

내에서 MainPage.xaml 파일이 마크 업을 가지고 있습니다 :

 public string Title 
    { 
     get { return ProfileModel.Instance.DescriptionProfile.Title; } 
    } 

Messenger.Default.Register<PropertyChangedMessage<string>>(this, 
     (action) => DispatcherHelper.CheckBeginInvokeOnUI(
     () => RaisePropertyChanged("Title"))); 

나는 다음과 같은 마크 업이 다른보기에서 :

 public string TitleEdit 
    { 
     get { return ProfileModel.Instance.DescriptionProfile.Title; } 

     set 
     { 
      if (ProfileModel.Instance.DescriptionProfile.Title == value) return; 

      string oldValue = ProfileModel.Instance.DescriptionProfile.Title; 


      ProfileModel.Instance.DescriptionProfile.Title = value; 

      RaisePropertyChanged("Title", oldValue, value, true); 
     } 
    } 
: 문자열을 설정/가져올 때 내가 이것을 사용 해당 뷰 모델에서

<TextBox Grid.Row="1" Width="250" Height="100" Text="{Binding TitleEdit, Mode=TwoWay}" /> 

을 D 나는 MainViewModel 생성자이 추가

답변

2

하위 페이지에서 속성을 변경하는 경우보기 모델에서 수정하려고합니다. 당신은 자식 클래스에 RaisePropertyChanged를 사용하는 경우, 방송 과부하를 사용

Messenger.Default.Register<PropertyChangedMessage<bool>>(this, 
    (action) => DispatcherHelper.CheckBeginInvokeOnUI(
    () => 
     { 
     MessageBox.Show(action.newValue.ToString()); 
     //do what you want here (i.e. RaisePropertyChanged on a value they share) 
    })); 

(어떤 속성이 bool 형식이며, 여기서주의,하지만 될 수 있음).

RaisePropertyChanged("Preference", oldValue, value, true); 

마지막으로, 그 DispatcherHelper를 사용하는 참고, 당신은 당신의 App 생성자 (App.xaml.cs)

DispatcherHelper.Initialize(); 
+0

덕분에 다음을 추가 할 필요가! 이것에 기초하여 변경을 한 후에 나는 필요한 것을 할 수있었습니다. 나는 이것에 기초하여 약간의 구체화를 보여주기 위해 나의 OP를 수정하고있다. – Stonetip

관련 문제