我有一个带有一堆选项卡的TabControl的WPF/MVVM应用程序。加载应用程序后,将加载所有选项卡的数据。在Tab1上进行的某些计算取决于Tab2的值。发生的是,当我在Tab2上输入/更改数据时,当我单击Tab1时,它根本不会反射(reflect)在Tab1上。在幕后,计算是正确的,但它不会反射(reflect)在tab1上。我必须转到主选项卡以重新加载所有数据以反射(reflect)更改。任何想法如何实现这一点?
最佳答案
您需要在 View 模型数据属性上实现INotifyPropertyChanged
。然后,让您的 View 模型订阅该事件( View 模型构造函数调用Initialize()
方法):
private void Initialize()
{
// Subscribe to events
this.PropertyChanging += OnPropertyChanging;
this.PropertyChanged += OnPropertyChanged;
this.Books.CollectionChanging += OnBooksCollectionChanging;
}
然后,事件的 View 模型处理程序可以更新任何需要更新的属性:
void OnPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
switch(e.PropertyName)
{
case "FirstProperty":
this.SomeOtheProperty = whatever;
break;
case "Another property":
this.YetAnotherProperty = somethingElse;
break;
}
}
那应该完成工作。
关于wpf - 反射(reflect)从一个ViewModel到另一个ViewModel的属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505192/