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



我有一个带有MvvmLight的UWP应用程序。在创建页面上,我打开一个内容对话框来选择一个类别,并通过MvvmLight信使将其发送到主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)));
}

类别属性为:

private CategoryViewModel? categoryViewModel;
public CategoryViewModel? Category
{
get => categoryViewModel;
set
{
if(categoryViewModel == value)
return;
categoryViewModel = value;
RaisePropertyChanged();
}
}

信息发送到此处:

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上:https://github.com/NPadrutt/MoneyFox.Windows/tree/fix-crashes

该过程是在添加付款并选择类别时进行的。

好吧,愚蠢的我没有删除我要替换的组合框。这一条有双向绑定,导致了这种情况。

最新更新