2009-07-27 18 views
3

Ich habe Gruppenboxen verschachtelt, die logisch verschachtelte Datenstrukturen in meiner Anwendung darstellen. Lassen Sie uns sagen, ich habe eine Struktur wie folgt:Binden einer Eigenschaft an eine andere Eigenschaft

Dev1 
- CDev1 
- CDev2 
    - ICDev1 
    - ICDev2 

Ich habe Kontrollkästchen zum Aktivieren/Deaktivieren jeder dieser Devs. Ich möchte die CheckState der untergeordneten Kontrollkästchen an CheckState des übergeordneten Kontrollkästchens binden. Ich möchte, dass der Mechanismus so funktioniert: Wenn ich CDev2 überprüfe, wird ICDev1 & ICDev2 automatisch überprüft. Aber wenn ich ICDev1 deaktiviere, bleibt CDev2 in seinem eigenen Zustand. Grundsätzlich möchte ich, dass diese Ereignisse an die Kinder weitergegeben werden, aber nicht an die Eltern, wie zum Beispiel eine Bindung.

Ich verwende. NET 2.0 SP2. Ich weiß nicht, ob das möglich ist oder nicht, deshalb würde ich mich freuen, wenn Sie mir ein paar Hinweise dazu geben. Wenn es nicht möglich ist, werde ich Event-Handler für alle Checkboxen implementieren.

Antwort

5

Try this:

childCheckBox.DataBindings.Add("Checked", parentCheckBox, "Checked"); 

Vielleicht haben Sie auch einen Blick auf die TreeView Kontrolle zu übernehmen wollen, hat es die Option CheckBox neben Anzeigen auf jedes Element.

0

Dies ist theoretisch möglich mit Zwei-Wege-Bindung in WPF (hier ist eine tutorial on data binding in WPF). Ich denke nicht, dass Sie das automatisch mit WinForms machen können. Wenn Sie WinForms verwenden, müssen Sie Ereignisse abfangen und verarbeiten, um Statusänderungen dieser Art manuell zu ändern.

0

Binding wird Ihr Problem nicht lösen. Wenn Sie einen Weg finden, ICDev1 und ICDev2 an CDev2 zu binden, bedeutet das, dass wenn ICDev1 aktiviert ist, sowohl ICDev1 als auch ICDev2 überprüft werden und umgekehrt. Wenn das das ist, was Sie wollen, brauchen Sie keine Kontrollkästchen für ICDev1, ICDev2, nur für CDev2. Wenn Sie möchten, dass Benutzer ICDev1 überprüft, ICDev2 jedoch deaktiviert, müssen Sie Ereignishandler implementieren.

0

Es ist möglich, in WPF, aber ich glaube nicht, es in WinForms möglich ist, weil es keine Eigenschaft Update Event-Mechanismus wie Abhängigkeitseigenschaft oder INotifyPropertyChanged ist Nehmen Sie in WinForms

0

einen Blick here und die link auf die Truss-Bibliothek von Kent Boogart, die Winformen komplett umgeht. Abhängig von Ihrem Modell kann es jedoch einige Unterklassen erfordern, da es ähnlich wie die wpf-Bindung funktioniert.

Verwandte Themen