我有一些代码可以计算几个值。计算完成后,我希望更新所有受影响的控件。
最容易用代码解释...
XAML:
<TextBlock x:Name="A" Text="{Binding PropertyA}" />
<TextBlock x:Name="B" Text="{Binding PropertyB}" />
视图模型:
public decimal PropertyA { get; set; }
public decimal PropertyB { get; set; }
public void CalculateAandB()
{
PropertyA = 12m;
PropertyB = 14m;
PropertyChanged(this, new PropertyChangedEventArgs("Recalculated"));
}
在某种程度上,我希望 A 和 B 在引发 "Recalculated"
事件时更新各自的新值。
我想在 XAML 而不是 C# 代码中执行此操作,并且我不想替换整个 ViewModel,因为只更改了 ViewModel 属性的子集。
为每个要更新的绑定的属性引发PropertyChanged
:
public void CalculateAandB()
{
PropertyA = 12m;
PropertyB = 14m;
PropertyChanged(this, new PropertyChangedEventArgs("PropertyA"));
PropertyChanged(this, new PropertyChangedEventArgs("PropertyB"));
}
或将属性分组到单独的嵌套视图模型中:
class SubViewModel
{
public decimal PropertyA { get; set; }
public decimal PropertyB { get; set; }
}
class ViewModel
{
public SubViewModel SubViewModel { get; set; }
public void CalculateAandB()
{
SubViewModel.PropertyA = 12m;
SubViewModel.PropertyB = 14m;
PropertyChanged(this, new PropertyChangedEventArgs("SubViewModel"));
}
}
<TextBlock x:Name="A" Text="{Binding SubViewModel.PropertyA}" />
<TextBlock x:Name="B" Text="{Binding SubViewModel.PropertyB}" />