FrameworkElement die DataContext-Eigenschaft NICHT Erben, unten das element Baum
Hallo WPF-Profis, ich hoffe zumindest, dass einige von Euch dies Lesen!
DataContext ist eine Eigenschaft, die auf FrameworkElement (Basis-Klasse für alle WPF-Controls) und ist implementiert als eine DependencyProperty. Das bedeutet, dass alle der untergeordneten Elementen in der logischen Struktur teilen die gleichen DataContext.
So das ContentControl sollte es tun, mit seinen untergeordneten Elemente richtig?
Habe ich ein Szenario, wo das ist NICHT der Fall und ich würde gerne wissen, WAS ist die Ursache für das Fehlverhalten ?!
Dass Sie verstehen ein bisschen mehr darüber Lesen Sie bitte in diesem thread ( nicht NICHT kopieren wollen, alles hier), wo der ärger beginnt...:
WPF: Kann nicht finden, die Trigger target 'cc'. Das Ziel muss vor allen Setter, Trigger
und zu sagen, dass es in kurzen Worten: Meine DataTemplates in das ContentControl haben einen Toten DataContext das bedeutet, dass es NICHTS zu binden, was eigentlich nicht möglich...
Jedes Element down der ContentControl hat NICHTS eingestellt in der DataContext-Eigenschaft ???
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Tatsache, dass es eine Abhängigkeitseigenschaft bedeutet nicht, Vererbung... Es ist wahr für
DataContext
, aber nur, weil die Abhängigkeit Eigenschaft hat dieFrameworkPropertyMetadataOptions.Inherits
Flagge in Ihren Metadaten.ContentControl
ist etwas besonderes: dieDataContext
seiner Nachkommen (visual tree gebaut von derDataTemplate
) ist eigentlich derContent
desContentControl
. Also, wenn IhrContentControl
keinen Inhalt hat, dieDataContext
im inneren ist es null.Dieser arbeitete für mich:
Ohne die
Content="{Binding}"
, den DataContext war NULL<ContentControl ContentTemplate="{StaticResource NotesTemplate}" Content="{Binding HeightField}"/>
Die Letzte Antwort (von VinceF) arbeitete für mich auch.
Wollte ich zeigen ein usercontrol-je nach dem Wert einer Eigenschaft im viewmodel. Also machte ich ein ContentControl mit Stil Löst. Je nach dem Wert einer Eigenschaft binden der trigger setzt eine bestimmte ContentTemplate mit den spezifischen usercontrol.
Usercontrol war auf der rechten Seite gezeigt, aber seine DataContext war immer null. Also musste ich den Kontext des ContentControl zu:
Content="{Binding}"
Danach, die Benutzersteuerelemente fein gearbeitet und hatten den gleichen DataContext wie Ihre Eltern.Also mein XAML-Code sieht so aus:
In der Ressourcen Teil I definiert zwei DataTemplates; jeweils eine für jedes UserControl, die ich zeigen will.
Den Teil, wo ich zeigen das Benutzersteuerelement in Abhängigkeit einer Eigenschaft ist der folgende:
nach dem Lesen diese Frage und die bisherigen Antworten, ich ziehe mit ContentControl mit Daten ausgelöst, die Inhalte wie diese:
Steuert, welche wird als Inhalt des ContentControl:
ContentControl die switch-eigene Inhalte per DataTrigger in ContentControl Stil:
Ich hoffe, dies hilft jemand, wie die vorherigen Antworten zu mir.