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

时间:2014-11-29 15:20:44

标签: c# wpf xaml

我想在资源文件中为文本框创建一个样式,我想在其中将每个文本框的NotifyOnError属性设置为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();
    }   
}

但遗憾的是,我现在没有在文本框中看到任何值。当我调试它时,我发现Source属性为null,同时从旧绑定复制它(请参阅上面的代码)

P.S。如果有人可以给我一个解决方案,我也可以在xaml中工作。

0 个答案:

没有答案