8

SelectedObject özelliğindeki nesne değiştiğinde otomatik olarak özellik ızgarası güncelleştirmesi nasıl olabilir? Sınıfımda INotifyPropertyChanged uygulamasını denedim ancak özellik ızgarası üzerine tıklayana kadar arka planda nesnenin yeni özelliklerini göstermiyor.PropertyGrid Güncellemesi

Nesnemin PropertyChanged olayına doğrudan abone olmayı denedim ve özellik etkinleştirildiğinde PropertyGrid öğesinin Refresh() yöntemini çağırarak. Ama bazı özelliklerim ilgili. Bir özelliği değiştirmek, birden çok PropertyChanged olayına neden olabilir. Bu iyi çalışıyor gibi görünüyor, ancak hala DataBinding aracılığıyla bunu yapmak için daha temiz bir yol olup olmadığını merak ediyorum. Ayrıca, kullanıcı yalnızca tek bir özelliği güncelledikten sonra kontrol Yenileme'yi birden çok kez kullanmaktan kaçınmak isterim.

PropertyGhaned olaylarından yenilenmesi için PropertyGrid'i almanın bir yolu var mı?

cevap

0

orada bunu yapmak için yerleşik bir yol, ama buraya ilgili özellikler için Refresh birden fazla çağrı kaçınmak istiyorsanız bir öneri olmadığını bilmiyorum: Bir PropertyChanged olay meydana

, bir zamanlayıcı başlatmak . Zamanlayıcı geçmeden olay tekrar oluşursa, hiçbir şey yapmayın. zamanlayıcı Tick durumunda, PropertyGrid yenilemek ve RefreshProperties bağımlılıkları olan her özelliğine bağlıyor ekleyerek, saat ve alarm

+0

Bu cevabın iki yaşında olduğunu biliyorum, ancak OP ile aynı soruyu aldım ve Timer'ın AutoReset özelliğine sahip olduğu bu yanıtı eklemek istiyorum. Anlamı, zamanlayıcıyı manuel olarak durdurmak zorunda değilsiniz. :-) –

31

deneyin durdurmak: Artık

[RefreshProperties(RefreshProperties.All)] 

, her zaman bu özellik değişiklikleri - bu otomatik olarak yenilenir diğer alanlar. Bu özellik, her zaman özellik ızgarasının "Refresh()" i çağırmaktan çok daha temiz bir yaklaşımdır.

+0

Harika! Bu neden kabul edilen bir cevap değil? – Dennis

+0

Çünkü yaklaşık 8 ay geç yayınlandı. – flarn2006

+1

** Neredeyse tüm sorunları çözdünüz. ** 'INotifyPropertyChanged', bu 'RefreshProperties' türküsü aslında tüm bunları bypass ederken (daha yavaş, makinemde görünüyor ama asla başarısız olmaz) teşekkür ederiz! –

İlgili konular