In WPF, I would like to be able to template how my bindings are applied by default.
For instance, I want to write :
Text=\"{Binding Path=PedigreeName}\"
Use one of the overloads of DependencyProperty.Register that take a PropertyMetadata. Pass an instance of FrameworkPropertyMetadata and set its properties.
public class Dog {
public static readonly DependencyProperty PedigreeNameProperty =
DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog),
new FrameworkPropertyMetadata() {
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus
}
);
I don't offhand see a way to set the defaults for NotifyOnValidationError, ValidatesOnDataErrors, or ValidatesOnExceptions, but I haven't used this enough to be sure what to look for; they may be there.
In addition to Joe White's good answer, you could also create a class that inherits from Binding and sets the default property values you need. For instance :
public class TwoWayBinding : Binding
{
public TwoWayBinding()
{
Initialize();
}
public TwoWayBinding(string path)
: base(path)
{
Initialize();
}
private void Initialize()
{
this.Mode = BindingMode.TwoWay;
}
}