Basit bağlama kullanılarak öğe kaynağı eklenmiş bir açılan kutum var. Birleşik giriş kutusu yüklendikten sonra bu bağlamayı yenilemenin herhangi bir yolu var mı?
Basit bağlama kullanılarak öğe kaynağı eklenmiş bir açılan kutum var. Birleşik giriş kutusu yüklendikten sonra bu bağlamayı yenilemenin herhangi bir yolu var mı?
Yanıtlar:
Bağlama ifadelerini kullanabilirsiniz:
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
Ancak Blindmeis'in belirttiği gibi, değişiklik bildirimlerini de ateşleyebilirsiniz, ayrıca koleksiyonunuz uygularsa INotifyCollectionChanged
(örneğin, içinde uygulanırsa ObservableCollection<T>
) senkronize olur, böylece bunlardan herhangi birini yapmanız gerekmez.
mvvm kullanıyorsanız ve itemsource, vm'nizde bulunuyorsa. Yenilemek istediğinizde koleksiyon mülkünüz için INotifyPropertyChanged'i çağırmanız yeterlidir.
OnPropertyChanged("YourCollectionProperty");
INotifyPropertyChanged
, ancak bağlantı noktasını özel tutmanız gerekecektir. bu sarmalayıcı ve bu nedenle, projede başka bir yerde kullandığınız o bağlantı noktasındaki her şey için bir özellik ve yöntem yazmanız gerekir, böylece bildirimde bulunmak istediğiniz mülklerin her zaman paketleyiciden geçmesini sağlayın
nameof(YourCollectionProperty)
gerçek bir dizenin aksine kullanmanın büyük bir hayranıyım . Bu, hataların yeniden düzenlenmesini önler ve gerçekte neyin amaçlandığı daha açıktır. Elbette burası CallerMemberName
daha da güzel olan özelliği kullanamayacağınız yer
Kullanmayı dene BindingExpression.UpdateTarget()
Arka uçtan veri alıyordum ve ekranı yalnızca bir satır kodla güncelledim. İşe yaradı. Emin değilim, neden Arayüzü uygulamamız gerekiyor? (Windows 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}