2009-10-19 5 views
6

Bisher habe ich diese:Hat jemand ein einfaches Beispiel für ein UserControl mit einem einzigen ContentPresenter?

<UserControl 
    x:Class="MyConcept.ExpanderPanel" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Border 
      Style="{StaticResource Border_PanelStyle}" 
      CornerRadius="3" /> 
     <ContentPresenter /> 
    </Grid> 
</UserControl> 

Beispiel Verwendung dieses Usercontrol:

<nc:ExpanderPanel 
    Grid.Row="0"> 
    <Expander 
     IsExpanded="True" 
     Header="NMT Users"> 
     <StackPanel> 
      ... 
     </StackPanel> 
    </Expander> 
</nc:ExpanderPanel> 

Diskussion

Wenn ich das laufen, ich habe nichts zu sehen. Es wird kein Inhalt angezeigt, nicht einmal der Rahmen, der in das Benutzersteuerelement integriert ist.

Ich dachte, vielleicht musste ich die ContentPresenter eine Abhängigkeitseigenschaft machen, aber ich konnte nicht herausfinden, wie ich die Eigenschaft mit dem ContentPresenter in der UserControl XAML verknüpfen würde.

Kann jemand ein einfaches Beispiel zur Verfügung stellen, das zeigt, wie man ein UserControl (oder irgendeine Art von kundenspezifischem Steuerelement) mit einem einzelnen ContentPresenter baut?

+0

Dies verwendet sieht aus wie es den Trick tun wird: http://blog.pixelingene.com/?p=24 – devuxer

Antwort

4

ContentPresenter werden hauptsächlich in ControlTemplates verwendet und mit einer TemplateBinding an den ContentControl.Content gebunden. von diesem site ... eine Steuer Vorlage für eine Schaltfläche, die ein Content

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="White" /> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate> 
     <Grid> 
      <Rectangle Fill="{TemplateBinding Property=Background}" /> 
      <ContentPresenter 
       Content="{TemplateBinding Property=ContentControl.Content}" /> 
     </Grid> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 
+0

Es zeigt sich, jetzt, aber ich bin mir nicht sicher, wie sich das auf meine Frage bezieht. Ich versuche, ein benutzerdefiniertes Steuerelement oder ein Benutzersteuerelement zu erstellen, das einen 'ContentPresenter' enthält, die ControlTemplate für eine Schaltfläche nicht festlegen. – devuxer

+0

Sie müssen ein ControlTemplate für Ihre Kontrolle verwenden, dies ist ein Beispiel dafür. Im Grunde müssen Sie dem ContentControl WIE mitteilen, wie es angezeigt werden soll. Es hat eine Reihe von "Standard" Vorlagen für einige eingebaute Dinge. http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a2988ae8-e7b8-4a62-a34f-b851aaf13886#contentpresenter –

+0

@ Muad'Dib ... du bist Bild sollte eine Maus sein – macon