WPF-Datenbindung an zusammengesetzte Klassenmuster?

Ich probiere WPF zum ersten Mal aus und habe Probleme damit, Steuerelemente an eine Klasse zu binden, die aus der Komposition anderer Objekte besteht. Beispiel: Wenn ich die Klasse Comp habe, die aus zwei separaten Klassen besteht (beachten Sie die verschiedenen Elemente, die der Übersichtlichkeit halber weggelassen wurden):

class One {
   int _first;
   int _second;
}

class Two {
   string _third;
   string _fourth;
}

class Comp {
   int _int1;
   One _part1;
   Two _part2;
}

Jetzt verstehe ich, dass ich _int1 mit einem in Comp definierten "get" leicht binden kann. Aber wie binde ich an die Elemente _part1._first, _part1._second. Habe ich "Getter" für sie in der Klasse Comp Level? oder kann ich sie innerhalb der zusammengesetzten Klassen verfügbar machen und einen Bindungspfad verwenden, der auf sie verweist? Und wie funktioniert das mit dem Setzen der Eigenschaften?

Also ist das das Muster?

....
<TextBlock Name="txtBlock" Text="{Binding Path=Third}" />    
....

class One {
   int _first;
   int _second;
}

class Two {
   string _third;
   string _fourth;
}

class Comp {
   int _int1;
   One _part1;
   Two _part2;

   int Int1 { get { return _int1; } set { _int1 = value; } }
   int First { get { return _part1._first; }  set { _part1._first = value; } }
   int Second { get { return _part1._second; } set { _part1._second = value; } }
   string Third { get { return _part2._third; }  set { _part2._third = value; } }
   string Fourth { get { return _part2.fourth; }  set { _part2._fourth = value; } }
}

...
Comp oComp = new Comp();
txtBlock.DataContext = oComp;
...

Oder ist das das Muster? (wo ich nicht sicher bin, was ich für den Pfad setzen soll)

....
<TextBlock Name="txtBlock" Text="{Binding Path=_part2.Third}" />    
....

class One {
   int _first;
   int _second;
   int First { get { return _first; }  set { _first = value; } }
   int Second { get { return _second; }  set { _second = value; } }
}

class Two {
   string _third;
   string _fourth;
   string Third { get { return _third; } set { _third = value; } }
   string Fourth { get { return _fourth; } set { _fourth = value; } }
}

class Comp {
   int _int1;
   One _part1;
   Two _part2;

   int Int1 { get { return _int1; } }
}

...
Comp oComp = new Comp();
txtBlock.DataContext = oComp;
...

Oder bin ich auf dem Weg, M-V-VM neu zu erfinden (was ich langsam begreife)?

....
<TextBlock Name="txtBlock" Text="{Binding Path=Third}" />    
....

class One {
   int _first;
   int _second;
}

class Two {
   string _third;
   string _fourth;
}

class Comp {
   int _int1;
   One _part1;
   Two _part2;

}

class CompView {
   Comp _comp;

   CompView( Comp comp ) {
      _comp = comp;
   }

   int Int1 { get { return _comp._int1; } set { _comp._int1 = value; } }
   int First { get { return _comp._part1._first; }  set { _comp._part1._first = value; } }
   int Second { get { return _comp._part1._second; } set { _comp._part1._second = value; } }
   string Third { get { return _comp._part2._third; }  set { _comp._part2._third = value; } }
   string Fourth { get { return _comp._part2.fourth; }  set { _comp._part2._fourth = value; } }
 }

...
Comp oComp = new Comp();
CompView oCompView = new CompView( oComp );
txtBlock.DataContext = oCompView;
...

Also, wie soll ich Dinge tun? Wenn es sich um das erste oder dritte Muster handelt, habe ich anscheinend alle meine schönen (unterschiedlichen) hierarchischen Daten auf eine flache Konfiguration heruntergefahren, damit ich sie an die Elemente der Benutzeroberfläche binden kann. Muss das so sein oder gibt es einen besseren Weg (zweites Muster ??)

Bearbeiten

Ich ließ außer Frage, dass ich wirklich Zwei-Wege-Bindung will. Also sollten die Property-Accessoren wirklich bekommen und gesetzt haben.

Bearbeiten

Mein Pseudocode wurde aktualisiert, um sowohl Setter als auch Getter anzuzeigen

Bearbeiten

Ich folgte dem Muster von Mark und Julien und implementierte Setter und war mit dem Ergebnis zufrieden. Aus irgendeinem Grund habe ich mich selbst davon überzeugt, dass die Einrichtung einer Immobilie nicht bis zur endgültigen Entität reicht.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage