基于控件未绑定到的属性名称更新控件



我有一些代码可以计算几个值。计算完成后,我希望更新所有受影响的控件。

最容易用代码解释...

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}" />

最新更新