从另一个视图模型更新视图

时间:2013-05-31 15:50:24

标签: dialog views mvvm-light

我是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的值。

但主视图中没有任何反应......

1 个答案:

答案 0 :(得分: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}"/>

更改是您使用默认的绑定模式,即OneWay。这意味着ViewModel可以将更改推送到View,但不会接收从View进行的更改。使用TwoWay意味着ViewModel在属性更改时从View接收通知。