tutorial - datagridview c# bindingsource
Usar BindingSource para enlazar a propiedades anidadas, o hacer entidades vinculables (3)
¿Se modificaron sus propiedades a través del mismo contexto utilizado por la interfaz de usuario?
Si es así, edite el archivo T4 que usa para crear sus entidades.
- Haga que cree entidades INotifyPropertyChanged, con propiedades que notifiquen los cambios y tengan un campo explícito detrás.
La vinculación a una propiedad anidada es bastante fácil:
checkBox1.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty")); //Normal binding
checkBox2.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty.innerProperty")); //Nested property
Sin embargo, cuando se modifica myProperty.innerProperty
, no se genera ningún evento: nunca se notifica a BindingSource sobre el cambio.
He read que la solución es "asegurarse de que cuando el objeto innerProperty
genera el evento PropertyChanged
, la clase MyProperty
que contiene innerProperty
captura el evento y también genera un evento PropertyChanged
propio".
Sin embargo, el framework de entidades no hace esto por mí , y prefiero no pasar por cada instancia de cada clase y conectar un método personalizado a cada propiedad de navegación, solo para hacer que mis clases sean enlazables. ¿Hay una solución decente para hacer que las entidades sean vinculables?
Puede probar POCO Entity Generator o la característica EF Code-First, que todavía está en CTP .
Sin embargo, ambos enfoques requieren EF4.
Tienes que implementar INotifyPropertyCHanged en tu clase.
Su propiedad debe verse algo como esto.
private bool _checked;
public bool Checked
{
get { return _checked; }
set
{
if (value != _checked)
{
_checked = value;
OnPropertyChanged("Checked");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyCHanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
No estoy seguro de si esto funciona para winforms. Funciona para WPF y Silverlight.