我是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 :(得分: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接收通知。