[英]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.