MVVMLight Messenger发送 - 暂停方法

时间:2018-04-12 23:20:12

标签: c# wpf mvvm-light

我正在将程序转换为Code Behind的MVVM Light。

该软件的一部分,必须从我们的银行读取CSV文件,获取所有数据,转换,将其复制到新的CSV中,然后上传到我们的会计软件。

使用后面的代码,在读取CSV时,如果是第一次上传信用卡,它会打开一个新表单,以便设置一些默认值,然后一旦设置了默认值,它就会继续处理

我一直在使用MessengerInstance在表单之间交换并在视图模型之间传递数据。但我不知道如何发送消息,暂停当前运行的方法,直到发回消息。

发送消息

     selectedCreditCard =
           _creditCardList.SingleOrDefault(x => x.CreditCardNumber == existingColumns[1]);
                 if (selectedCreditCard == null)
                 {
                     MessengerInstance.Send(Messaging.FormChanged.NewCreditCard);
                     MessengerInstance.Send(existingColumns[1], Messaging.MessengerTokens.
                  }

接收消息

  public NewCreditCardViewModel()
    {
        Messenger.Default.Register<string>(this, Messaging.MessengerTokens.NewCreditCards, value => AccountName = value);

        SaveCommand = new RelayCommand(SaveNewCreditCard);
        RefreshCommand = new RelayCommand(RefreshVendorsAndReviewers);
        CreditCard = new VPCreditCard();
    }

1 个答案:

答案 0 :(得分:0)

如果我理解正确

您希望将此消息与消息分离,然后只需从默认表单中的OK回发消息即可继续处理。即保存状态并继续使用默认值

继续
  1. 处理CSV第1部分(停止处理,保存状态,检查新cc)

    1.a - 如果是新cc,请将消息发送到默认表单(如果不是新cc,则处理CSV第2部分)

    1.b - 默认打开,单击确定,发送消息返回处理表单

  2. 接收完成的默认消息,处理CSV第2部分(从左侧继续)

  3. 前提是你只需要将CSV处理分为2个部分,2个方法,并允许它通过其状态自行恢复