调用RaisePropertyChanged时多次调用UWP属性集
我有一个带有MvvmLight的UWP应用程序。在创建页面上,我打开一个内容对话框,选择一个类别,并通过MvvmLight messenger将其发送到主ViewModel 在此处完成对消息的订阅:调用RaisePropertyChanged时多次调用UWP属性集,uwp,Uwp,我有一个带有MvvmLight的UWP应用程序。在创建页面上,我打开一个内容对话框,选择一个类别,并通过MvvmLight messenger将其发送到主ViewModel 在此处完成对消息的订阅: public void Subscribe() { MessengerInstance.Register<CategorySelectedMessage>(this, async message => await ReceiveMessageAsyn
public void Subscribe()
{
MessengerInstance.Register<CategorySelectedMessage>(this, async message => await ReceiveMessageAsync(message));
}
public void Unsubscribe()
{
MessengerInstance.Unregister<CategorySelectedMessage>(this, async message => await ReceiveMessageAsync(message));
}
private async Task ReceiveMessageAsync(CategorySelectedMessage message)
{
if(SelectedPayment == null || message == null)
return;
SelectedPayment.Category = mapper.Map<CategoryViewModel>(await mediator.Send(new GetCategoryByIdQuery(message.CategoryId)));
}
该信息发送至此处:
MessengerInstance.Send(new CategorySelectedMessage(category.Id));
这就是信息:
public class CategorySelectedMessage
{
public CategorySelectedMessage(int categoryId)
{
CategoryId = categoryId;
}
public int CategoryId { get; set; }
}
一旦调用RaisePropertyChanged,该集合将再次调用两次,但为null。“ReceiveMessageAsync”方法只被调用一次,所以我有点搞不清楚这些额外的调用是从哪里来的。如果我注释掉RaisePropertyChanged,就不会有重复的调用,但显然UI不会得到更新。我还检查了调用堆栈,没有看到重复的调用
如果它有助于整个项目在Github上的运行,则:
该过程是在添加付款并选择类别时进行的。好的,我没有删除要替换的组合框。这一个有一个双向绑定,这导致了这一点
public class CategorySelectedMessage
{
public CategorySelectedMessage(int categoryId)
{
CategoryId = categoryId;
}
public int CategoryId { get; set; }
}