/ / Comment rendre la propriété personnalisée de la classe Linq2SQL pouvant être liée? - c #, winforms, linq-to-sql, liaison de données

Comment rendre la propriété personnalisée de la classe Linq2SQL pouvant être liée? - c #, winforms, linq-to-sql, liaison de données

Ma base de données a une table Foo avec la propriétéEst vrai. J'ai créé une classe Linq2SQL "myData.dbml" pour cette base de données et ajouté la classe Foo générée à ma barre de sources de données. J'ai une fenêtre Winforms simple avec un ToggleButton qui devrait se lier à l'inverse de IsTrue.

Pour ce faire, j'ai essayé d'ajouter la propriété NotTrue au fichier myData.dbml, mais cela a entraîné un nom de ligne non valide "SQLException" "NotTrue". J'ai essayé d'ajouter le code de propriété à myData.cs comme ceci:

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();
}
}
}

Mais la propriété n’apparaissait pas lors de l’ajout de Foo aux sources de données, même lors de l’ajout de [Bindable(true)]

Ce qui a fonctionné a été contraignant pour IsTrue et nier le Reliement avec ceci:

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;
}
}
}

Appelé comme ça:

InvertBoolBinding(lockToggleButton.DataBindings, "IsChecked");

Bien que dans mon projet principal il y ait une énorme quantitéde ces liaisons, cette approche est assez compliquée. Il semble que les sources de données ne soient pas en mesure de connecter des propriétés via des classes partielles. Lorsque j'ajoute la propriété à myData.designer.cs, elle est trouvée. Mais cette classe est régulièrement régénérée et ma propriété est perdue.

Donc, j'ai peut-être besoin d'une approche complètement différente ou peut-être un moyen de faire fonctionner les extensions de classe partielles. J'espère que vous avez une idée à ce sujet. Merci!

Réponses:

0 pour la réponse № 1

Le déplacement de la classe Linq2SQL vers un autre assemblage oblige Visual Studio à résoudre la connexion partielle.

A trouvé ici.