J'ai une TreeView avec case à cocher. J'ai vu quelques exemples en ligne pour montrer comment lier ensemble checkbox parent/enfant en utilisant INotifyPropertyChanged. Cependant, ce que j'essaye de réaliser est quelque chose de plus que cela.Manipuler TreeView avec CheckBox
En supposant que j'ai 2 autre objet
principal objet
public class MainObject
{
public string Name;
public List<SubObject> SubObjects;
public bool? IsChecked;
//other parameters
}
Sous Objet
public class SubObject
{
string Label;
public bool? IsChecked;
//other parameters
}
TreeView Afficher
- Main_Object_1(Name)
- Sub_Object_1(Label)
- Sub_Object_2(Label)
- Main_Object_2(Name)
- Sub_Object_3(Label)
I ont 3 objectifs:
1) Parent/Enfant association de case à cocher
Objet principal et objet sous reflètera l'état correct en fonction de la case à cocher est cliqué.
Si la case Objet principal est cochée, tout le sous-objet sera vérifié.
Si l'un de l'objet sous est cochée, l'objet principal sera nul (entièrement rempli avec un peu de couleur)
2) association ensemble différent
À tout moment, un jeu (Main_Object_1 ou Main_Object_2) peut être vérifié.
En supposant que "Main_Object_2" et "Sub_Object_3" sont cochés. Lorsque vous cochez "Main_Object_1" ou "Sub_Object_1" ou "Sub_Object_2", "Main_Object_2" et "Sub_Object_3" sont désactivés.
3) Exécution d'autres tâches à côté de la mise à jour de l'affichage des cases à cocher
je devrai effectuer d'autres tâches en fonction du nœud est cochée/décochée.
Un pointeur sur la façon d'y parvenir? Merci.
Si les attributs de données de classe sont déclarés en tant que champs ('public bool? IsChecked;'), vous ne pourrez même pas les afficher via une liaison. Cependant, s'il s'agit de propriétés ('public bool? IsChecked {get; set;}'), vous pouvez écrire * any * dans setter et implémenter les exigences 1.2.3. avec un certain effort investi – ASh