WPF-Benutzersteuerelement in DataTemplate in ItemsControl - wie an das Parent von ItemsSource gebunden wird

8

Die Betreffzeile sagt alles wirklich! Ich habe ein Benutzersteuerelement, das erfolgreich an ein Fullname-Objekt gebunden werden kann - d. H. Es funktioniert in Ordnung.

Ich muss jetzt eine Liste von diesen anzeigen, und das funktioniert wieder, wenn das Steuerelement in einem DataTemplate in ItemsControl.Template ist.

Das Steuerelement hat jedoch eine Eigenschaft (InEditMode), die keine Eigenschaft des Fullname-Objekts ist, sondern des Objekts, das über ItemsSource die Fullnamelist-Eigenschaft aufweist, an die das ItemsControl gebunden ist. Diese InEditMode-Eigenschaft funktioniert einwandfrei, wenn das Steuerelement nicht in einer Liste enthalten ist und an die übergeordneten Nebeneigenschaftsnamen namens ParentInEditMode und ParentFullname gebunden ist.

Die Frage ist - welcher Stil des Bindungsausdrucks ist erforderlich, um die Editiermodus-Eigenschaft des übergeordneten Objekts zu erhalten, wenn das Steuerelement ein ItemsControl ist?

Oder sollte ich das Fullname-Objekt so umgestalten, dass es eine EditMode-Eigenschaft enthält?

Vielen Dank im Voraus!

Aktualisierung:

Das Element (d. h. das Objekt, das sich in einer Sammlung befindet, die an ItemsControl gebunden ist) verfügt über keine solche Eigenschaft. Der Code ist sehr einfach:

%Vor%

Das übergeordnete Objekt (das Ansichtsmodell für das Fenster) hat Eigenschaften:

  • Vollständige_Namensliste
  • ParentInEditMode
  • Vollständiger Name (Einzelelement zum Testen von NameView, das perfekt mit dieser XAML außerhalb eines Listensteuerelements funktioniert, mit:

    %Vor%

Ich möchte den Bearbeitungsmodus auf die gesamte Sammlung anwenden - der Flagteil von Fullname scheint nicht richtig zu sein!?

    
J Stewart 18.09.2009, 01:16
quelle

2 Antworten

15

Ich habe eine Antwort auf meine eigene Frage gefunden, von der ich hoffe, dass sie anderen hilft. Die Arbeitssyntax, die ich habe, ist dies:

%Vor%

Damit wird die Eigenschaft, die ein Geschwister von FullnameList ist, korrekt aufgenommen und an das Datenvorlagenelement übergeben. Mehr durch Glück als durch Urteil, aber ich hoffe, dies ist ein guter Weg, dies zu tun!

    
J Stewart 18.09.2009 09:53
quelle
0

ItemsControl erstellt für jedes Item in ItemsSource das angegebene DataTemplate und in seinem DataContext das Item. Jetzt kann jedes DataTemplate an sein Element in seinem Datenkontext binden.

Ich nehme an, Ihr Gegenstand hat eine Eigenschaft "ParentInEditMode"; Es sollte kein Problem mit der Bindung an diese Eigenschaft geben.

Wenn es nicht funktioniert, aktualisieren Sie Ihre Frage bitte mit Code.

    
Trainee4Life 18.09.2009 02:28
quelle