簡體   English   中英

根據未綁定的屬性名稱更新控件

[英]Update a control based on a property name to which it is not bound

我有一些代碼可以計算多個值。 一旦計算完成,我希望所有受影響的控件都進行更新。

最容易用代碼解釋...

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屬性的一個子集。

為每個屬性(您要更新的綁定)提高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}" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM