C# 在行为中动态更改wpf绑定属性时,AssociatedObject绑定源为null

C# 在行为中动态更改wpf绑定属性时,AssociatedObject绑定源为null,c#,wpf,xaml,C#,Wpf,Xaml,我想在资源文件中为textbox创建一个样式,我想在其中将每个textbox的NotifyOneError属性设置为true 我也在用同样的行为,但我不能这么做 我已经尝试过的代码是: BindingExpression be = this.AssociatedObject.GetBindingExpression(TextBox.TextProperty); if (be!=null) { Binding b = be.ParentBinding; Binding newBi

我想在资源文件中为textbox创建一个样式,我想在其中将每个textbox的NotifyOneError属性设置为true

我也在用同样的行为,但我不能这么做

我已经尝试过的代码是:

BindingExpression be = this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);

if (be!=null)
{
    Binding b = be.ParentBinding;
    Binding newBinding = new Binding()
                                {
                                    Source = b.Source,
                                    Path = b.Path,
                                    Mode = b.Mode,
                                    NotifyOnValidationError = true
                                };
    BindingOperations.ClearBinding(this.AssociatedObject, TextBox.TextProperty);
    BindingOperations.SetBinding(this.AssociatedObject, TextBox.TextProperty, newBinding);

    BindingExpression bex = this.AssociatedObject.GetBindingExpression(TextBox.TextProperty);
    if (bex != null)
    {
        bex.UpdateTarget();
    }   
}
但不幸的是,我现在在文本框中没有看到任何值。当我调试它时,我发现源属性为null,同时从旧绑定复制它(参考上面的代码)


另外,如果有人能给我一个解决方案,我也可以在xaml中使用它。

我忘了提到,已经为各个xaml文件中的每个文本框设置了绑定。我想做的是,如果尚未在绑定中设置NotifyOnValidationError,我想确保它设置为true。
newXPath
是否是
oldBinding.Source
上的有效属性?我想不是。您可能需要将现有绑定的
newBinding.Path=oldBinding.Path
设置为绑定到同一个属性,或者最好将现有绑定的
NotifyOnValidationError
validatesonceptions
属性更改为
true
好的,我尝试了您告诉我的第一个选项,已将path属性设置为oldBinding。仍然没有在文本框中显示值。第二个选项是不允许的,我得到了一个错误,当现有绑定已经设置时,无法更改它。