1

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

用代码最容易解释...

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 属性的一个子集。

4

1 回答 1

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}" />
于 2013-11-08T13:51:24.673 回答