我有一些计算多个值的代码。计算完成后,我希望所有受影响的控件都能更新。
最容易用代码解释......
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"));
}
在某种程度上,我希望在"Recalculated"
事件被提升时,A和B都会使用各自的新值进行更新。
我想在XAML中而不是C#代码中执行此操作,并且我不想替换整个ViewModel,因为只更改了ViewModel属性的一部分。
答案 0 :(得分:1)
为每个属性引发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}" />