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
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.
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.
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.
- 1. Bu sözdizimi yapısı nedir ve nasıl çalışır?
- 2. IDataErrorInfo vs ValidationRule vs Exception
- 3. WPF, nedir Tooltip/Border
- 4. Winforms, WPF ve metro arasındaki fark nedir?
- 5. Bu Groovy yapısı nedir ve sözdizimi nasıl çalışır?
- 6. ActionScript 3 nedir? O nasıl çalışır?
- 7. SignalR, Suave ile nasıl çalışır?
- 8. JBehave Java ile nasıl çalışır?
- 9. Bu "verim" ile nasıl çalışır?
- 10. ControlPaint.Light'a WPF eşdeğeri nedir?
- 11. WPF - Open File Dialog WPF ve Sunucu
- 12. IIS neleri içerir ve nasıl çalışır?
- 13. ThrowTerminatingError C# ile nasıl çalışır?
- 14. Argümanlar ile akış manipülatörleri nasıl çalışır?
- 15. WPF köprüler sadece sayfalarda çalışır mı?
- 16. Strophe nedir ve JQuery ile nasıl kullanılır?
- 17. Lua'nın baskısı nasıl çalışır ve Lua/Torch
- 18. Bir istek isteği Angular, Express ve Mongoose ile nasıl çalışır?
- 19. UNIX komutları mv ve rm açık dosyalar ile nasıl çalışır?
- 20. MonitoredTrainingSession() işlevi "geri yükleme" ve "test modu" ile nasıl çalışır?
- 21. WPF ItemsControl ve Grid ile Dinamik Düzenleme
- 22. WPF SelectedItem ve Scrolling
- 23. WPF'de WPF Komutu ve Olay arasındaki fark nedir?
- 24. COM TreatAs nasıl çalışır (ve ne zaman çalışır?)
- 25. SASL Anonymous, xmpp ile nasıl çalışır?
- 26. Polimorfik dernek Ecto ile nasıl çalışır?
- 27. CouchDB'de başlangıç ve bitiş tuşları nasıl çalışır?
- 28. Tomcat7 JAX-RS ile nasıl çalışır?
- 29. Asenkron olarak IndexedDB ile nasıl çalışır?
- 30. Tam olarak nasıl çalışır?() {}() Çalışır?
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. –
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. –
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ı? –