2009-04-27 12 views
7

Görünürlüğü Görünür olarak değiştirildiğinde, UserControl'ümdeki tüm bağlantıları güncellemem gerekiyor. Hemen hemen tüm bağlamaları bunu bağlayıcı hedef güncellemeye çalışıyorum böylece kullanıcı denetiminin DataContext'i özelliğinde bağlıdır:Tüm bağlamaları UserControl bir kerede güncelle

BindingOperations.GetBindingExpressionBase(this, UserControl.DataContextProperty).UpdateTarget(); 

Ama GetBindingExpression(..) yöntemin sonucunda null olsun ve merak ediyorum eğer bu yanlış kullanırsam. Ayrıca, denetimdeki tüm bağları (kaynak olarak DataContext'i kullanan) yenilemenin başka iyi bir yolu var mı?. çalışmaz değeri (yani DataContext = DataContext) mülkü sıfırlama, Bilginize

var dataContext = DataContext; 
DataContext = null; 
DataContext = dataContext; 

:

cevap

15

Eh, sadece DataContext yeniden atayabilir.

+0

OMG, sen bir dahisin! Neden, Niçin bunu düşünmemiştim ?! Teşekkürler, bu işe yaradı :) – Alexandra

+2

Bunu yapmanın daha zarif bir WPF'y yolu var mı? WPF bir çeşit bağlama yenileme mekanizmasını desteklememeli mi? – BrettRobi

+2

En müthiş şey, ikinci satır olmadan yenileme gerçekleşmez. DataContext özelliğini nasıl karıştırdığınız önemli değil, boş değere ayarlanmadıkça hiçbir şey olmuyor. Yardım için teşekkürler. – EFraim

1

Yanlış özellikte BindingOperations.GetBindingExpressionBase yöntemini kullanıyorsunuz. DataContext özelliğine değil, DataContext özelliğine bağlanan özelliklerde kullanmak zorundasınız.

İlgili konular