wpf - 反射(reflect)从一个ViewModel到另一个ViewModel的属性更改

标签 wpf mvvm viewmodel

我有一个带有一堆选项卡的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/

相关文章:

c# - AccessText 类的 WPF 使用和预期结果

c# - 在图片中结合MVVM和MVC

wpf - 在MVVM中以编程方式添加按钮,但Command不起作用

c# - 跨不同 Controller 和 View 重用局部 View (ascx)

wpf - 将 View 拆分为两个单独的 View

WPF DataGrid ItemsSource 在更改源时不会更新

c# - 使用 CommandParameter 在 TreeView 项上进行键绑定(bind)

wpf - Caliburn.Micro 我应该使用 Screen 还是 Conductor.AllActive 作为我的父 View

wpf - 我可以将 DataGrid 的 CellTemplate 定义为 Resource 以便它可以在多个列中重复使用吗?

c# - 签署应用程序时出现 System.IO.FileLoadException