如何改变两个可观察的属性(彼此相关),但又避免死锁?
为了便于说明,我将其保持得非常简单:
我计算了两个东西,(1) 物品和 (2) 这些物品的容器。每个容器可以容纳 3 个物品。用户可以更改物品数量和容器数量。更改其中一个会自动更改另一个。
你可以想象,这会导致彻底的僵局。
显示值:
<Entry Text="{Binding Amount}"/>
<Entry Text="{Binding Sections}"/>
设置值:
private int amount;
public int Amount
{
get => amount;
set
{
SetProperty(ref amount, value);
Sections = Convert.ToInt32(Math.Round(Amount / 3));
}
}
private int sections;
public int Sections
{
get => sections;
set
{
SetProperty(ref sections, value);
Amount = Sections * 3;
}
}
如何防止死锁,例如在用户调用时仅更改一次属性?