2009-07-07 16 views
24

WPF'de, bağlarımın varsayılan olarak nasıl uygulandığını şablon edebilmek istiyorum.WPF: Bağlamanın varsayılan değerini tanımlayın

Text="{Binding Path=PedigreeName}" 

Ama daktilo sanki olurdu: Örneğin

, ben yazmak istiyorum

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

fikrin var mı?

sayesinde

  • Patrick

cevap

16

Joe White'ın iyi yanıtına ek olarak, Binding'den miras alan bir sınıf da oluşturabilir ve ihtiyacınız olan varsayılan özellik değerlerini ayarlayabilirsiniz. Örneğin:

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

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

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

Teşekkürler, bu şekilde uygulamaya başladım. [code] public class DoğrulamaBinding: Binding { public ValidationBinding() { Initialize(); } public ValidationBinding (dize yolu) : temel (yol) { Initialize(); } private void Initialize() { Mode = BindingMode.TwoWay; UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; NotifyOnValidationError = true; ValidatesOnDataErrors = true; ValidatesOnExceptions = true; } } [/ code] – PBelanger

+0

Bu ayrıca Silverlight 3 + içinde de çalışıyor mu? –

+0

Bir XAML kullanım örneği harika olurdu - bulamazsanız ... – vines

25

kullanın PropertyMetadata almak DependencyProperty.Register ait aşırı biri. FrameworkPropertyMetadata örneğini geçirin ve özelliklerini ayarlayın.

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

I do not hazırlıksız NotifyOnValidationError, ValidatesOnDataErrors veya ValidatesOnExceptions için varsayılan değerleri ayarlamak için bir yol görüyorum ama ne aramak için emin olmak için bu yeterli kullanmadıysanız; orada olabilirler.

+0

Teşekkürler, güzel fikir, ama benim durumumda, Köpek sınıfı bir iş modeli projesinde. Bu proje için System.Windows'a bağımlılık eklemek istemiyorum. Ben fo arıyordum çözüm, bu gibi bir şey, , ama yine ... Teşekkür eşleşen bir şey bulamadım! – PBelanger

İlgili konular