我正在将程序转换为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();
}
答案 0 :(得分:0)
如果我理解正确
您希望将此消息与消息分离,然后只需从默认表单中的OK回发消息即可继续处理。即保存状态并继续使用默认值
继续处理CSV第1部分(停止处理,保存状态,检查新cc)
1.a - 如果是新cc,请将消息发送到默认表单(如果不是新cc,则处理CSV第2部分)
1.b - 默认打开,单击确定,发送消息返回处理表单
接收完成的默认消息,处理CSV第2部分(从左侧继续)
前提是你只需要将CSV处理分为2个部分,2个方法,并允许它通过其状态自行恢复