WPF:定义绑定&x27;违约

WPF:定义绑定&x27;违约,wpf,xaml,binding,templates,default,Wpf,Xaml,Binding,Templates,Default,在WPF中,我希望能够模板化默认情况下如何应用绑定 例如,我想写: Text="{Binding Path=PedigreeName}" 但这就好像我输入了: Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 有什

在WPF中,我希望能够模板化默认情况下如何应用绑定

例如,我想写:

Text="{Binding Path=PedigreeName}"
但这就好像我输入了:

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 
有什么想法吗

谢谢

  • 帕特里克

使用的重载之一获取PropertyMetadata。传递的实例并设置其属性

public class Dog {
    public static readonly DependencyProperty PedigreeNameProperty =
        DependencyProperty.Register("PedigreeName", typeof(string), typeof(Dog),
            new FrameworkPropertyMetadata() {
                BindsTwoWayByDefault = true,
                DefaultUpdateSourceTrigger = UpdateSourceTrigger.LostFocus
            }
        );

我没有立即找到一种方法来设置NotifyOnValidationError、ValidateSondaErrors或ValidatesOnExceptions的默认值,但我还没有充分使用它来确定要查找什么;它们可能在那里。

除了Joe White的好答案之外,您还可以创建一个从绑定继承的类,并设置所需的默认属性值。例如:

public class TwoWayBinding : Binding
{
    public TwoWayBinding()
    {
        Initialize();
    }

    public TwoWayBinding(string path)
      : base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Mode = BindingMode.TwoWay;
    }
}

谢谢,好主意,但就我而言,狗类是一个商业模式项目。我不想为此项目添加对System.Windows的依赖项。我所寻找的解决方案就是朝着这个方向,就像把。。。在App.xaml中,但未找到任何匹配项。。。再次感谢!谢谢,我最终以这种方式实现了它。[code]公共类ValidationBinding:Binding{public ValidationBinding(){Initialize();}public ValidationBinding(字符串路径):base(路径){Initialize();}private void Initialize(){Mode=BindingMode.TwoWay;UpdateSourceTrigger=UpdateSourceTrigger.LostFocus;NotifyOnValidationError=true;validatesondaerrors=true;validatesonceptions=true;}}}[/code]@vines:
Text=“{my:TwoWayBinding Path=PedigreeName}”