2009-07-07 119 views
24

在WPF中,我希望能够模板默认情况下应用我的绑定的方式。WPF:定义绑定的默认值

举例来说,我想写:

Text="{Binding Path=PedigreeName}" 

但是这将是我仿佛类型:

Text="{Binding Path=PedigreeName, Mode=TwoWay, UpdateSourceTrigger=LostFocus, NotifyOnValidationError=True, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" 

任何想法?

感谢,

  • 帕特里克

回答

16

除了Joe White的良好答案,您还可以创建一个继承自Binding的类并设置您需要的默认属性值。例如:

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

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

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

谢谢,我结束了这样的实施。 [code] public class ValidationBinding:Binding { public ValidationBinding() { Initialize(); } public ValidationBinding(string path) :base(path) { Initialize(); } private void Initialize() { Mode = BindingMode.TwoWay; UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; ValidatesOnDataErrors = true; ValidatesOnExceptions = true; } } [/ code] – PBelanger 2009-07-08 18:58:52

25

使用DependencyProperty.Register是采取PropertyMetadata的重载之一。通过FrameworkPropertyMetadata的实例并设置其属性。

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

我不是随便看到一个方法来设置NotifyOnValidationError,ValidatesOnDataErrors,或ValidatesOnExceptions默认值,但我没用过这还不够,就一定要寻找什么;他们可能在那里。

+0

谢谢,好主意,但在我的情况下,狗类是业务模型中的项目。我不想为此项目添加对System.Windows的依赖关系。我正在寻找的解决方案是在这个方向,像 在App.xaml中,但没有发现任何东西再匹配...谢谢! – PBelanger 2009-07-08 18:57:31