2017-08-17 6 views
-1

Ich habe eine TreeView mit Checkbox. Ich habe ein paar Beispiele online gesehen, die zeigen, wie Eltern/Kind-Checkboxen mit INotifyPropertyChanged verbunden werden. Was ich jedoch versuche zu erreichen, ist mehr als das.TreeView mit CheckBox manipulieren

Angenommen, ich habe 2 verschiedene Objekt

Haupt Objekt

public class MainObject 
{ 
    public string Name; 
    public List<SubObject> SubObjects; 
    public bool? IsChecked; 
    //other parameters 
} 

Sub-Objekt

public class SubObject 
{ 
    string Label; 
    public bool? IsChecked; 
    //other parameters 
} 

TreeView Anzeige

- Main_Object_1(Name) 
    - Sub_Object_1(Label) 
    - Sub_Object_2(Label) 
- Main_Object_2(Name) 
    - Sub_Object_3(Label) 

Ich habe 3 Ziele:

1) Eltern-/Kind-Checkbox Vereinigung

Hauptobjekt und Unter Objekt den richtigen Status reflektieren je nachdem, welche Option geklickt wird.

Wenn das Kontrollkästchen Hauptobjekt aktiviert ist, werden alle Unterobjekte geprüft.

Wenn eine der Unter Objekt überprüft wird, wird Hauptobjekt null sein (voll mit etwas Farbe gefüllt)

2) Verschiedene Satz Assoziation

Zu jeder Zeit einen Satz (Main_Object_1 oder Main_Object_2) kann überprüft werden.

Angenommen, nur "Main_Object_2" und "Sub_Object_3" ist aktiviert. Wenn "Main_Object_1" oder "Sub_Object_1" oder "Sub_Object_2" aktiviert ist, ist "Main_Object_2" und "Sub_Object_3" deaktiviert.

3) Durchführen von anderen Aufgaben das Kontrollkästchen Anzeige

neben Aktualisierung I benötigt andere Aufgabe auszuführen abhängig davon, welcher Knoten aktiviert/deaktiviert.

Irgendein Zeiger darauf, wie man das erledigt? Danke.

+0

Wenn Klassendatenattribute als Felder deklariert sind ('public bool? IsChecked;'), können Sie diese nicht über Binding anzeigen. Wenn es sich jedoch um Eigenschaften handelt ('public bool? IsChecked {get; set;}'), kann man * any * logic in setter schreiben und Anforderungen 1.2.3 implementieren. mit etwas Aufwand investiert – ASh

Antwort

0

Ich schaffte es, die gewünschte Ausgabe zu bekommen, indem ich eine IsChecked-Eigenschaft und eine Elterneigenschaft und eine Set-Eigenschaft hinzufügte. Danach habe ich etwas Logik hinzugefügt, um den Checkbox-Status zu manipulieren. Für Ziel 3 füge ich einfach einen überprüften Ereignishandler hinzu, um die von mir benötigte Aufgabe auszuführen.