2009-10-19 11 views
6

Finora, ho questo:Qualcuno ha un semplice esempio di UserControl con un singolo 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> 

esempio dell'uso di questo UserControl:

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

Discussione

Se corro questo, non vedo niente. Non viene presentato alcun contenuto, nemmeno il bordo incorporato in UserControl.

Ho pensato che forse avevo bisogno di rendere la proprietà di dipendenza ContentPresenter, ma non riuscivo a capire come collegare la proprietà a ContentPresenter in XAML di UserControl.

Qualcuno può fornire un semplice esempio che mostra come creare un UserControl (o un qualche tipo di controllo personalizzato) con un singolo ContentPresenter?

+0

Questo appare come farà il trucco: http://blog.pixelingene.com/?p=24 – devuxer

risposta

4

ContentPresenters sono utilizzati principalmente in ControlTemplates e associati a TemplateBinding a ContentControl.Content. da questo site ... un modello di controllo per un pulsante che utilizza una ContentPresenter

<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

Si presenta ora, ma non sono sicuro di come questo si riferisce alla mia domanda. Sto cercando di creare un controllo personalizzato o un controllo utente che contenga un 'ContentPresenter', non impostare il ControlTemplate per un pulsante. – devuxer

+0

devi usare un ControlTemplate per il tuo controllo, questo è un esempio di come farlo. Fondamentalmente, devi dire al ContentControl come visualizzare ciò che vuoi che venga visualizzato. Ha una serie di modelli "predefiniti" per alcune cose built-in. http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a2988ae8-e7b8-4a62-a34f-b851aaf13886#contentpresenter –

+0

@ Muad'Dib ... sei un'immagine dovrebbe essere un mouse – macon