2010-06-29 20 views
7

Formda yaklaşık 100 TextBox var. Örneğin ondalık ise bunları doğrulamam gerekir. Bu işe yarıyor, ancak çok ayrıntılı, XAML'de 100 satırlık yerine 800 tane olmak istemiyorum.Howto WPF Bağlama yazılmış satır içi = kısa biçim

<TextBox.Text> 
    <Binding Path="MyPath" UpdateSourceTrigger="PropertyChanged" Stringformat="{}{0:N}" NotifyOnValidationError="True"> 
     <Binding.ValidationRules> 
      <myRulesNamespace:MyValidationRule ValidationType="decimal" /> 
     </Binding.ValidationRules> 
    </Binding> 
</TextBox.Text> 

Böyle kısa biçime nasıl yeniden yazmanın herhangi bir yolu var mı? :

Text="{Binding MyPath, UpdateSourceTrigger='PropertyChanged', StringFormat='{}{0:N}', NotifyOnValidationError=True, ValidationRules NOW WHAT?}" 

cevap

6

Kısa cevap: Yapamazsınız. Doğrulama kuralları özelliği bir koleksiyondur ve şu anda bunları Bağlama kestirme olarak yazmanın bir yolu yoktur.

Bununla birlikte bu gibi Bağlama devralmasını bir sınıf oluşturabilirsiniz: o zaman

public class SuperBinding:Binding 
{ 
    public SuperBinding() 
    { 
     UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; 
     ValidationRules.Add(new MyValidationRule{ValidationType = typeof(decimal)}); 
     //set rest of properties 
    } 
} 

Ve bunun yerine normal bir Cilt etiketinin kullanırlar.

2

böyle bir liste kutusu veya ListView gibi bir liste konteyner kontrolünüzde 100 metin kutularının içerdiği, bir DataTemplate içine bu bağlayıcı koyabilirim. Daha sonra her bir maddeye validasyon kuralı uygulanacaktır.

Herhangi bir kapsayıcı denetimini yeniden düzenlemek mümkün olduğundan, istediğiniz düzeni yine de alabilirsiniz.