C# MVC中视图模型之间的数据传递#

C# MVC中视图模型之间的数据传递#,c#,wpf,mvvm,C#,Wpf,Mvvm,我目前正在尝试创建一个“日志”文本框,该文本框可以在我拥有的多个视图模型(绑定到多个视图)之间获取消息。我已经尝试了用户Blachshma here()描述的方法,但它似乎不起作用 我有三节课。类AViewModel、类BViewModel和类ABViewModel 在其构造函数中使用以下代码将视图绑定到AViewModel: this.InitializeComponent(); this.model = new AViewModel(); this.DataContext = this.mo

我目前正在尝试创建一个“日志”文本框,该文本框可以在我拥有的多个视图模型(绑定到多个视图)之间获取消息。我已经尝试了用户Blachshma here()描述的方法,但它似乎不起作用

我有三节课。类AViewModel、类BViewModel和类ABViewModel

在其构造函数中使用以下代码将视图绑定到AViewModel:

this.InitializeComponent();
this.model = new AViewModel();
this.DataContext = this.model;
B和AB的视图遵循相同的模式

课程结构如下:

public class A : INotifyPropertyChanged
{
    private string log = string.empty;

    public class A()
    {
    }

    public string ALog
    {
        get
        {
            return this.log;
        }

        set
        {
            this.log = value;
            this.NotifyPropertyChanged("ALog");
        }
    }

    private void NotifyPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    /* Function that executes when relay command is clicked */
    private void ExecuteCommand()
    {
       this.ALog += "here";
    }
}
类B的定义方式与属性BLog相同

类ABViewModel具有每个视图模型的属性

public class ABViewModel
{
    public AViewModel AVM
    {
        get;
        set;
    }
    public BViewModel BVM
    {
        get;
        set;
    }
}
在xaml中,我只需要

我的计划是最终使用Multibinding将两个日志连接在一起,但目前我甚至无法使用单视图模型来更新我的字符串。看起来我的容器视图模型ABViewModel没有得到更新,但我真的不明白为什么,但我不完全确定如何修复这个问题

非常感谢您的任何建议

谢谢

编辑: 我调试代码并看到字符串ALog正在更新,但在UI上看不到更改。有关更多信息,请单击连接到类a中的RelayCommand的按钮。此按钮调用方法以连接到COM端口。打开COM端口后,我能够从其他视图模型成功地使用它。日志应该会更新,说明com端口已打开,但我从未在GUI中看到任何添加到日志的文本,即使我可以调试的ALog实例包含添加的文本


我不能将Prism或MVVM light用于此特定项目。

“我知道这是因为ABViewModel(我的容器视图模型)没有收到更改通知。”。哦,是吗?这就是你的想法。“它似乎不起作用。”你认为你可以提供更多关于你对ui所做的事情的细节吗,那么会发生什么反应呢?嗨,Ed。我在UI上单击一个按钮,该按钮映射到a类中的中继命令。该按钮仅连接到一个串行端口,然后用它已连接的消息更新日志。我在编写代码时试图简化它。我可以说我已经连接到COM端口,因为我可以使用UI上的其他按钮通过该COM端口进行对话;我将研究在ViewModels之间使用PubSub事件,这样它们就不会紧密耦合。这允许更改和可伸缩性(如果您有依赖于一个事件的不同/额外ViewModels)。我建议查看Prism的EventAggregator(其他库也可用)。先看一下这个示例:“我知道这是因为ABViewModel(我的容器视图模型)没有收到更改通知”。哦,是吗?这就是你的想法。“它似乎不起作用。”你认为你可以提供更多关于你对ui所做的事情的细节吗,那么会发生什么反应呢?嗨,Ed。我在UI上单击一个按钮,该按钮映射到a类中的中继命令。该按钮仅连接到一个串行端口,然后用它已连接的消息更新日志。我在编写代码时试图简化它。我可以说我已经连接到COM端口,因为我可以使用UI上的其他按钮通过该COM端口进行对话;我将研究在ViewModels之间使用PubSub事件,这样它们就不会紧密耦合。这允许更改和可伸缩性(如果您有依赖于一个事件的不同/额外ViewModels)。我建议查看Prism的EventAggregator(其他库也可用)。请查看此示例以开始: