2009-12-10 23 views
5

WPF'de bazı özel doğrulayıcılar üzerinde çalışırken, iş arkadaşlarımdan biri IDataErrorInfo'yi işaret etti. XAML'de bir metin kutusu ve bir düğmesi olan örnek bir görünümüm var. Metin kutusundaki değere bağlı olarak, düğmenin etkin veya devre dışı olmasını istiyorum. İş arkadaşım, IDataErrorInfo'nun görünümümün sunumu içinde genişletilmesini ve 'Öğe' ve 'Hata' özellikleri için özel bir mantık yazmanın sorunumu çözeceğini söyledi. Bunu koduma dahil etmeden önce, IDataError bilgisinin nasıl çalıştığını ve özel doğrulama mantığını tetiklemek için gerekli kancaları sağlayan bu arabirimin uygulanmasıyla ilgili neyi anladığımı anladım. Bu konsept ile ilgili bazı yardımlar son derece yararlı olacaktır!IDataErrorInfo nedir ve WPF ile nasıl çalışır?

cevap

4

IDataErrorInfo, bir sınıfın belirli bir özellik için hata bilgilerinin yanı sıra sınıf düzeyindeki hataları bildirmek için uygulayabileceği bir arabirimdir.

DataContext'iniz olarak kullandığınız sınıf için bunu uygularsanız (örn: MVVM'de ViewModel), denetimler için UpdatesOnValidationError öğesini true olarak ayarlayabilir ve hata varsa öğeyi farklı görüntülemek için özel bir şablon ayarlayabilirsiniz. WPF sizin için sıhhi tesisat işlemektedir. Bu bir short tutorial showing the entire process.

+0

numaralı noktaya yazdım. Hızlı yanıt için teşekkürler. Aslında bütün kabloların perde arkasında nasıl çalıştığını merak ediyordum. WPF dünyasında yeni olmak için, Runtime, IDataErrorInfo'nun genişletilmesinin validasyonu tetikleyeceğini tam olarak nasıl bildiğini merak ediyordum. Açıklaman çok yardımcı oluyor ama ben hep birlikte nasıl bir araya geldiğim konusunda birazcık şaşkınım. –

+1

Temel olarak, UpdatesOnValidationError komutunu koyarsanız, bir özellik değiştiğinde (WPF, INotifyPropertyChanged veya bağımlılık özelliği mekanizması aracılığıyla bilir), bu özellik için IDataError bilgilerine karşı denetler. Bir hata varsa, şablonu değiştirir. –

+0

Teşekkürler Reed. İşler daha net hale geliyor.XAML, benim Textbox.Text için, aşağıdaki ekleme hakkında düşünüyorum: burada UpdatesOValidationError olarak Gerçek nitelendirir? ValidatesOnTargetUpdated = "Doğru" mu, metnin Error özelliğini çağırır mı? –

0

Sen WPF Application Framework (WAF) ait BookLibrary örnek uygulamada ilginizi çekebilir. Doğrulama hataları olduğunda WPF'de doğrulama kullanımını ve Kaydet düğmesinin nasıl kontrol edileceğini gösterir.

0

Daha önce belirtildiği gibi, IDataErrorInfo arabirimleri, veriye bağlı ViewModel özellikleri için doğrulama sağlar. Özel doğrulama kurallarını uygulayabilir veya System.ComponentModel.DataAnnotations içinde bulunan doğrulama özniteliklerini kullanabilirsiniz.

Konuyla ilgili eğiticilerin çoğunun ekstra "kabartmak" ile sıkıştırılmış olduğunu ve WPF ile kavramını kavramak için birisinin zorlamasını sağlayabileceğini buldum. Refactorthis.net adresinde WPF Validation tutorial for the rest of us. Learn to use IDataErrorInfo to automatically validate your views.

İlgili konular