我需要调试给定依赖项属性的Binding设置。 在开始时,我使用以下代码将绑定设置为给定源实例的依赖项属性:
var binding = new Binding(path);
binding.Source = source;
binding.Mode = twoWay ? BindingMode.TwoWay : BindingMode.OneWay;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
binding.Converter = valueConverter;
var bindingResult = BindingOperations.SetBinding(this, ModelValueProperty, binding);
var bindingExpression = BindingOperations.GetBindingExpression(this, ModelValueProperty);
bindingExpression不为null且绑定状态为Active。 经过一些视图操作后,当我尝试获取bindingExpression时,它将为null。 如何捕获给定依赖项属性上的绑定替换或更改?
修改 换句话说,我想知道当bindingExpression将其状态从Active更改为Detached时如何获得通知
答案 0 :(得分:0)
您需要设置此属性:
binding.NotifyOnSourceUpdated = true
并注册到您所绑定的控件的SourceUpdated
事件(在您的情况下,它是this
):
this.SourceUpdated += (s, args) =>
{
// Catch changes there
};
或者,您可以使用DependencyProperty
直接在DependencyPropertyDescriptor
上捕捉所做的更改:
var descriptor = DependencyPropertyDescriptor.FromProperty(ModelValueProperty, typeof(YourType));
descriptor.AddValueChanged(this, OnValueChanged);
private void OnValueChanged(object sender, EventArgs e)
{
//...
}