Вы не можете изменить привязку после того, как она была использована, и, в свою очередь, это относится и к ValidationRules.Вы можете создать новый Binding в коде, но это, вероятно, не то, что вам нужно.
Binding binding = new Binding("Name");
binding.Mode = BindingMode.TwoWay;
binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
binding.NotifyOnValidationError = true;
binding.ValidationRules.Add(new ExceptionValidationRule());
nameTextBox.SetBinding(TextBox.TextProperty, binding);
Стиль не будет работать, поскольку Binding или ValidationRule не являются производными от FrameworkElement.Что бы я сделал в вашей ситуации - это подклассное связывание, куда вы добавляете все, что вам нужно.Примерно так
<TextBox x:Name="Name" Width="150" >
<TextBox.Text>
<local:ExBinding Path="Name"
Mode="TwoWay"
UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
ExBinding, добавление ValidationRule и т. Д.
public class ExBinding : Binding
{
public ExBinding()
: base()
{
NotifyOnValidationError = true;
ValidationRules.Add(new ExceptionValidationRule());
}
}