调用RaisePropertyChanged时多次调用UWP属性集

调用RaisePropertyChanged时多次调用UWP属性集,uwp,Uwp,我有一个带有MvvmLight的UWP应用程序。在创建页面上,我打开一个内容对话框,选择一个类别,并通过MvvmLight messenger将其发送到主ViewModel 在此处完成对消息的订阅: public void Subscribe() { MessengerInstance.Register<CategorySelectedMessage>(this, async message => await ReceiveMessageAsyn

我有一个带有MvvmLight的UWP应用程序。在创建页面上,我打开一个内容对话框,选择一个类别,并通过MvvmLight messenger将其发送到主ViewModel

在此处完成对消息的订阅:

    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; }
}