/ / ¿Cómo hacer que la propiedad personalizada de la clase Linq2SQL sea enlazable? - c #, winforms, linq-to-sql, enlace de datos

¿Cómo hacer que la propiedad personalizada de la clase Linq2SQL sea enlazable? - c #, winforms, linq-to-sql, enlace de datos

Mi base de datos tiene una tabla con la propiedadEs verdad. Hice una clase de Linq2SQL "myData.dbml" para esta base de datos y agregué la clase Foo generada a mi barra de fuentes de datos. Tengo una ventana Winforms simple con un ToggleButton que debería unirse al inverso de IsTrue.

Para lograr esto, intenté agregar la propiedad NotTrue a myData.dbml pero esto causó una excepción SQLException, nombre de fila no válido "NotTrue". Intenté agregar el Código de propiedad a myData.cs de esta manera:

public bool NotTrue {
get {
return !this._IsTrue;
}
set {
if (this._IsTrue == value) {
this.OnIsTrueChanging(!value);
this.SendPropertyChanging();
this._IsTrue = !value;
this.SendPropertyChanged("IsTrue");
this.SendPropertyChanged("NotTrue");
this.OnIsTrueChanged();
}
}
}

Pero luego la Propiedad no apareció al agregar Foo a Datasources incluso al agregar [Bindable(true)]

Lo que funcionó fue vincular a IsTrue y negar el enlace con esto:

private void InvertBoolBinding(ControlBindingsCollection collection,string property) {
foreach (Binding b in collection) {
if (b.PropertyName.Equals(property)) {
ConvertEventHandler invert = new ConvertEventHandler((sender, e) => { e.Value = !((bool)e.Value); });
b.Format += invert;
b.Parse += invert;
}
}
}

Llamado así:

InvertBoolBinding(lockToggleButton.DataBindings, "IsChecked");

Aunque en mi proyecto principal hay una gran cantidadde esos enlaces, este enfoque es bastante complicado. Parece que Datasources no puede conectar propiedades a través de clases parciales. Cuando agrego la propiedad a myData.designer.cs, se encuentra. Pero esta clase se regenera regularmente y mi propiedad se pierde.

Entonces, tal vez necesito un enfoque completamente diferente o tal vez haya una manera de hacer que funcionen las extensiones de clase parciales. Espero que tengas alguna idea al respecto. ¡Gracias!

Respuestas

0 para la respuesta № 1

Mover la clase Linq2SQL a un ensamblado diferente hace que Visual Studio resuelva la conexión parcial.

Encontró aquí.