2010-07-21 22 views
37

Null bir int geçiş koduna bir metin kutusu veriyorum. Verileri metin kutusundan silersem bana bir onaylama hatası verir (etrafındaki kırmızı kenarlık). İşteWPF DataBinding: Nullabilir Int hala bir doğrulama hatası alır?

benim bağlayıcı kod edilir: Ben metin kutusu temizlemek Açıkça bir Nullable olarak işaretlenmiş

ZipBinding = new Binding("Zip"); 
ZipBinding.Source = Address; 
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding); 

public Int32? Zip { get { ... } set { ... } } 

öyleyse neden WPF istiyorum bana bir doğrulama sorunu vermek ne zaman?

cevap

70

Boş dizeyi boş bir tam sayıya dönüştüremediğinden doğrulama başarısız oluyor. Bağlamada string.empty için TargetNullValue değerini ayarlayın ve boş dizgiyi geçersiz olacak, geçerli olacaktır.

+0

basit, bir satır. bitti :) –

+18

Harika çalışıyor! XAML içinde nasıl yapılacağı için bu cevaba bakın http://stackoverflow.com/a/1895482/83111 – Oskar

+0

String.Empty olarak ayarlamayın, çünkü null için alana "String.Empty" metnini bakın modeldeki değerler. Bunun yerine boş bir Dize kullanın. Örnek: '' – Beauty

0

Boş bir TextBox! = Null.

Boş dizeleri giriş olarak kabul etmek için ValidationRule öğesinin ince ayarını yapmanız gerekebilir. Ya da boş dizeleri almak ve bunları boş değere dönüştürmek için bir dönüştürücü oluşturabilirsiniz.

+0

Yani bu bir Int32 içine String.Empty ayrıştırmaya çalışıyor çünkü başarısız oluyor? ... Eğer durum buysa, evet, Null Converter'a StringEmpty oluşturmak zorunda kalacağım. –

İlgili konular