Tengo un cuadro combinado con la fuente de los elementos adjunta mediante un enlace simple. ¿Hay alguna forma de actualizar este enlace una vez que se carga el cuadro combinado?
Tengo un cuadro combinado con la fuente de los elementos adjunta mediante un enlace simple. ¿Hay alguna forma de actualizar este enlace una vez que se carga el cuadro combinado?
Respuestas:
Puede usar expresiones vinculantes:
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
((ComboBox)sender).GetBindingExpression(ComboBox.ItemsSourceProperty)
.UpdateTarget();
}
Pero como señaló Blindmeis , también puede disparar notificaciones de cambio, además, si su colección implementa INotifyCollectionChanged
(por ejemplo, implementada en ObservableCollection<T>
), se sincronizará, por lo que no necesita hacer nada de esto.
si usa mvvm y su itemsource se encuentra en su vm. simplemente llame a INotifyPropertyChanged para la propiedad de su colección cuando desee actualizar.
OnPropertyChanged("YourCollectionProperty");
INotifyPropertyChanged
, pero tendrá que mantener el puerto privado para ese contenedor y, por lo tanto, debe escribir una propiedad y un método para todo en ese puerto que usa en otra parte del proyecto para asegurarse de que las propiedades que le interesa notificar siempre pasen por el contenedor
nameof(YourCollectionProperty)
en lugar de una cadena literal. Esto evita que los errores se refactoricen y es más explícito lo que realmente se pretende. Aquí es, por supuesto, donde no puede usar el CallerMemberName
atributo, que es aún mejor
Intenta usar BindingExpression.UpdateTarget()
Estaba obteniendo datos del backend y actualicé la pantalla con solo una línea de código. Funcionó. No estoy seguro de por qué necesitamos implementar Interface. (Windows 10, UWP)
private void populateInCurrentScreen()
{
(this.FindName("Dets") as Grid).Visibility = Visibility.Visible;
this.Bindings.Update();
}