2009-07-07 134 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