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}"/>

视图模型.cs public string MyProperty { get { return _mystring ; } set { _mystring = value; RaisePropertyChanged("MyProperty"); } }

以下是我在主视图上与按钮绑定的命令上调用对话框的方式: MyDialog diag = new MyDialog (); diag.ShowDialog();

并且在与对话框上的按钮绑定的命令中,我更改了 MyProperty 的值。

但是主视图中什么也没有发生...

4

1 回答 1

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 的通知。

于 2013-06-13T08:18:56.627 回答