繁体   English   中英

当其他属性更改时更新属性

[英]Updating a property when a different property changes

我有一些XAML

<Button Background="{Binding ButtonBackground}" />
<Label Background="{Binding LabelBackground}" />

两者都应在相同的属性更改事件IsRunning上更新到目前为止,我有三个属性, ButtonBackgroundLabelBackgroundIsRunning其中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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM