如何解决源更新时不刷新绑定值
背景
我有一个自定义 Button,您将其绑定到一个布尔值,该布尔值将根据 bool 值改变样式。
这是我使用的背后代码:
public bool Boolean
{
get => (bool)this.GetValue(BooleanProperty);
set
{
this.SetValue(BooleanProperty,value);
NotifyPropertyChanged();
}
}
public static readonly DependencyProperty BooleanProperty = DependencyProperty.Register(
"Boolean",typeof(bool),typeof(BooleanButton),new FrameworkPropertyMetadata(false,FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
}
}
public BooleanButton() : base()
{
InitializeComponent();
this.PropertyChanged += DataContext_PropertyChanged;
this.Click += ButtonControl_Click;
}
private void DataContext_PropertyChanged(object sender,PropertyChangedEventArgs e)
{
//changing style
}
private void ButtonControl_Click(object sender,RoutedEventArgs e)
{
Boolean = !Boolean;
}
问题
现在,如果我点击按钮,源属性被很好地修改,但如果属性从代码中的其他地方更改,则不会触发 PropertyChanged 事件,我无法相应地更新我的样式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。