2013-05-31 69 views
0

我是新來的MVVM的哲學,我的問題可能是愚蠢的,但嘿,我無論如何嘗試。從另一個視圖更新視圖相同的視圖模型

我有一個與模型視圖關聯的視圖。在這個視圖中,當用戶按下一個按鈕時,我打開一個對話框。

從這個對話框中,我想刷新主視圖而不關閉對話框。

對話框和主視圖共享相同的視圖模型,並且我有一個綁定在主視圖中的屬性。

但是,當我從對話框中更改綁定屬性時,它會更新,但不是主視圖。

這裏是一些代碼:

MainView.xaml:

<TextBox x:Name="tnNomModele" HorizontalAlignment="Left" Height="23" Margin="142,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="143" Text="{Binding MyProperty, UpdateSourceTrigger=PropertyChanged}"/>

ViewModel.cs public string MyProperty { get { return _mystring ; } set { _mystring = value; RaisePropertyChanged("MyProperty"); } }

這是我如何調用對話框,與上一鍵綁定命令主視圖: MyDialog diag = new MyDialog(); diag.ShowDialog();

並且在與該對話框上的按鈕綁定的命令中,我更改了MyProperty的值。

但什麼也沒有發生在主視圖...

回答

0

我認爲你需要改變你的綁定:

<TextBox x:Name="tnNomModele" HorizontalAlignment="Left" Height="23" Margin="142,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="143" Text="{Binding MyProperty,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 

的變化是,您使用的是默認綁定模式,它是單向的。這意味着ViewModel可以將更改推送到視圖,但不會接受從視圖進行的更改。使用TwoWay意味着ViewModel在屬性更改時從View接收通知。

+0

好的,謝謝。最後,我使用的組件有一個MVVM版本,但它是不穩定的,所以我取消了MVVM的使用......悲哀地... – user2441025