[英]Updating a property when a different property changes
我有一些XAML
<Button Background="{Binding ButtonBackground}" />
<Label Background="{Binding LabelBackground}" />
两者都应在相同的属性更改事件IsRunning
上更新到目前为止,我有三个属性, ButtonBackground
, LabelBackground
和IsRunning
其中IsRunning
明确为所有三个触发了OnNotifyPropertyChanged
。 如果我决定添加一个应在同一触发器上更新的新属性,这将很繁琐且容易出现错误。
当更改其他属性时,是否可以指示数据绑定获取属性的值? 也许像<Button Background="{Binding ButtonBackground, Source=IsRunning} />
?
如果您的IsRunning
属性是DependencyProperty
,则可以仅添加一个PropertyChangedCallback
处理程序。 每当更新IsRunning
属性时,都会调用此处理程序,因此您可以从此处设置其他属性:
public static readonly DependencyProperty IsRunningProperty = DependencyProperty.
Register("IsRunning", typeof(bool), typeof(MainWindow), new UIPropertyMetadata(false,
OnIsRunningChanged));
public bool IsRunning
{
get { return (bool)GetValue(IsRunningProperty); }
set { SetValue(IsRunningProperty, value); }
}
private static void OnIsRunningChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
// Update your other properties here
}
如果不是DependencyProperty
,则可以从设置器中更新其他属性:
public bool IsRunning
{
get { return isRunning; }
set
{
isRunning = value;
NotifyPropertyChanged("IsRunning");
// Update your other properties here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.