Laden...

Wie kann ich eine ObservableCollection an eine CheckBox binden?

Erstellt von Platoon vor 3 Jahren Letzter Beitrag vor 3 Jahren 410 Views
P
Platoon Themenstarter:in
57 Beiträge seit 2017
vor 3 Jahren
Wie kann ich eine ObservableCollection an eine CheckBox binden?

Hallo zusammen,

wünsche frohe Weihnachten gehabt zu haben.

Ich habe derzeit ein kleines Problem und weiß nicht wie ich es lösen kann.

Ich habe ein ViewModel (settingsModel). Dieses Model dient zum einen einem Window als Quelle und zum anderen auch entsprechenden Pages.

Wenn ich nun meine Page pgUserRights in einen Frame auf dem Window lade, dann setze ich den DataContext auf ein entsprechendes Objekt vom Typ settingsModel.

Bei meinem Problem ist es egal ob ich ein eigenes Objekt innerhalb der Page erzeuge oder ob ich das bereits bestehende aus dem Window als Parameter mitgebe.

Die CheckBox erhält kein Value aus einer ObservableCollection innerhalb des Models.
Wenn ich nun das Property, sprich die ObservableCollection direkt als DataContext angebe, dann werden die Werte entsprechend gesetzt.

Das hilft mir aber nicht viel weil ich die Commands etc. aus dem Model nutzen möchte.

Ich hab das über die RelativeSources schon probiert, hat aber nichts geholfen. Irgendwo scheine ich einen Denkfehler zu haben. Hat jemand von euch schon mal so einen Fall gehabt? Die Meldung im Debugger lautet:

Fehlermeldung:
Die Eigenschaft "CanAddBanks" wurde im Objekt vom Typ "ObservableCollection1" nicht gefunden. Datenkontext: SettingsModel - Bindungspfad GroupRights.CanAddBanks - Ziel CheckBox.IsChecked - Zieltyp Nullable1

Besten Dank für einen Denkanstoß.

.....an unhandled exception is the first way to think about your pattern of programming....
.....nur weil ich nicht weiß was dort passiert, bedeutet es nicht, dass ich nicht weiß, wie man es lösen kann - aber das ist wahrscheinlich....

4.931 Beiträge seit 2008
vor 3 Jahren

Du scheinst Liste und enthaltenes Objekt vertauscht zu haben.
GroupRights ist wohl bei dir die ObservableCollection. Diese hat aber keine Eigenschaft namens CanAddBanks, sondern (wohl) nur die enthaltenen Objekte. Du benötigst also ein konkretes Objekt (mittels eines Zugriffs auf einen Index der ObservableCollection).

P
Platoon Themenstarter:in
57 Beiträge seit 2017
vor 3 Jahren

Das dürfte die Sache auf den Punkt treffen, ich hätte jetzt einen Ansatz:

Ich lasse mir ein Grid Anzeigen von dessen Elementen in ich mir das jeweilige Value anzeigen lassen. Ergibt vermutlich auch Sinn da das Ganze ja auch mehr als nur ein Gruppenrecht erhalten kann.

Danke - das wird's gewesen sein.

Was sich mir aber noch nicht ganz erschließt ist - warum geht's, wenn ich die CheckBox direkt an das Property binde? Nimmt dann der Kontext immer das erste Value oder wie verhält sich das?

Das wäre ja blöd oder kann man auch über XAML dann die Collection ansteuern? Das wäre definitiv charmant.

.....an unhandled exception is the first way to think about your pattern of programming....
.....nur weil ich nicht weiß was dort passiert, bedeutet es nicht, dass ich nicht weiß, wie man es lösen kann - aber das ist wahrscheinlich....