Kumpulan Properti UWP dipanggil beberapa kali ketika RaisePropertyChanged dipanggil

Saya memiliki aplikasi UWP dengan MvvmLight. Pada halaman pembuatan saya membuka dialog konten untuk memilih kategori dan mengirimkannya melalui messenger MvvmLight ke ViewModel utama.

Berlangganan pesan dilakukan di sini:

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

Properti kategori adalah:

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

Pesan dikirim ke sini:

MessengerInstance.Send(new CategorySelectedMessage(category.Id));

dan inilah pesannya:

public class CategorySelectedMessage
{
    public CategorySelectedMessage(int categoryId)
    {
        CategoryId = categoryId;
    }

    public int CategoryId { get; set; }
}

Segera setelah RaisePropertyChanged dipanggil, himpunan dipanggil lagi dua kali tetapi dengan nol. Metode AcceptMessageAsync hanya dipanggil sekali jadi saya agak bingung dari mana panggilan tambahan itu akan datang. Jika saya mengomentari RaisePropertyChanged tidak ada lagi panggilan duplikat, tapi jelas UI tidak diperbarui. Saya juga memeriksa tumpukan panggilan dan tidak dapat melihat panggilan duplikat.

Jika ini membantu seluruh proyek ada di Github di bawah: https://github.com/NPadrutt/MoneyFox.Windows/tree/fix-crashes

Prosesnya adalah ketika menambahkan pembayaran dan memilih kategori.


uwp
person NPadrutt    schedule 11.09.2020    source sumber


Jawaban (1)


Oke bodohnya saya tidak menghapus kotak kombo yang saya ganti. Yang itu memiliki ikatan dua arah yang menyebabkan hal ini.

person NPadrutt    schedule 12.09.2020