ContentPresenter in UserControl

8

Ich bin neu bei WPF und versuche ein UserControl zu erstellen, das etwas verschachtelten Inhalt haben wird.

%Vor%

Wie Sie sehen können, möchte ich ein StackPanel einbauen. Während ich einige Artikel lese, sollte ich ContentPresenter zu meinem UserControl hinzufügen, also tat ich es, aber ich kann nicht finden, was mit seiner Content-Eigenschaft verknüpft werden sollte.

Hier ist mein UserControl-Code

%Vor%

Ich habe viele Kombinationen aus verschiedenen Artikeln ausprobiert, aber ich kann kein funktionierendes Beispiel dafür finden, was ich erreichen möchte.

Eine ähnliche Frage wurde früher von einem anderen Benutzer gestellt, aber die Antworten haben mir nicht geholfen: Hat jemand ein einfaches Beispiel für ein UserControl mit einem einzigen ContentPresenter?

    
krzychu 19.07.2012, 09:57
quelle

3 Antworten

9

Ich habe dieses Problem gelöst, indem ich den benutzerdefinierten Stil auf GroupBox angewendet habe. Ich habe Syle in ResourceDictionary erstellt, was wie folgt aussieht

%Vor%

Und diesen Stil auf GroupBox

angewendet %Vor%

Dieser Code funktioniert wie erwartet

Sie können sich auch auf diesen großartigen Artikel beziehen, der verschiedene Optionen zeigt, um dies zu erreichen: Ссылка Es beschreibt auch, warum ContentPresenter in meinem Code nicht funktioniert.

    
krzychu 20.07.2012, 08:25
quelle
8

ContentPresenter ist eine Art magische Kontrolle. Wenn Sie nichts angeben, wird automatisch die Eigenschaft Content , ContentTemplate und ContentTemplateSelector mit einem TemplateBinding auf das TemplatedParent gesetzt. Was bedeutet, dass Sie nichts liefern müssen, nur

%Vor%

in Ihrem UserControl, und es sollte automatisch die entsprechenden Eigenschaften in Ihrem UserControl verwenden. Denken Sie auch daran, dass eine Bindung wie {Binding Content} sich immer auf Ihren DataContext bezieht, was vermutlich nicht das ist, was Sie wollten.

    
dowhilefor 19.07.2012 10:06
quelle
1

Sie müssen eine Abhängigkeitseigenschaft für Ihren UserControl-Code wie InnerContent erstellen.

%Vor%

Dann müssen Sie an diesen InnerContent auf der XAML-Seite dieses Benutzersteuerelements binden.

%Vor%

Wenn Sie es dann verwenden, anstatt Inhalt direkt in UserControl zu platzieren und den vorhandenen Inhalt zu überschreiben, fügen Sie ihn einfach zum InnerContent-Teil hinzu.

%Vor%

Ansonsten ist die Verwendung eines Templates oder Styles genauso gut, aber wenn Sie ein UserControl für die Verwendung zusammenpacken möchten, ohne dass jemand einen Style oder eine Vorlage referenzieren muss, ist dies wahrscheinlich eine Ihrer besseren Optionen.

    
Michael Puckett II 19.06.2017 18:48
quelle

Tags und Links