2010-10-16 51 views
6

Estoy mirando para fijar un UserControl para ser el Content de otro UserControl en XAML, de la misma manera se puede establecer un Button'sContent a ser cualquier cosa.WPF control de usuario dentro de otro control de usuario

Digamos que mi "externa" UserControl se parece a esto:

<MyUserControl> 
    <Grid> 
     <Border FancyPantsStyling="True"> 

     <-- I want to insert other controls here --> 

     </Border> 
    </Grid> 
</MyUserControl> 

Y me gustaría crear una instancia de esta manera:

<local:MyUserControl> 
    <local:MyUserControl.Content> 
     <local:AnotherControl /> 
    </local:MyUserControl.Content> 
</local:MyUserControl> 

¿Cómo diseño MyUserControl para hacerlo es Content en una ¿ubicación específica?

Respuesta

0

a menos que malinterprete la pregunta, puede usar su control y configurar su contenido para lo que necesite.

4

Todo lo que pones en el XAML de tu UserControl es su Contenido, por lo que no puedes inyectar algo más configurando la propiedad de Contenido. Hay algunas maneras diferentes en que puede manejar esto. Si usted no tiene nada en el código subyacente para MyUserControl sólo puede deshacerse de él y usar algo como:

<ContentControl> 
    <ContentControl.Template> 
     <ControlTemplate TargetType="{x:Type ContentControl}"> 
      <Grid> 
       <Border FancyPantsStyling="True"> 
        <ContentPresenter/> 
       </Border> 
      </Grid> 
     </ControlTemplate> 
    </ContentControl.Template> 

    <local:AnotherControl/> 
</ContentControl> 

Si tiene código detrás que no acceder a los elementos XAML directamente que puede hacer una cosa similar con su control existente (ya que la UC se deriva de ContentControl):

<local:MyUserControl> 
    <local:MyUserControl.Template> 
     <ControlTemplate TargetType="{x:Type local:MyUserControl}"> 
      <Grid> 
       <Border FancyPantsStyling="True"> 
        <ContentPresenter/> 
       </Border> 
      </Grid> 
     </ControlTemplate> 
    </local:MyUserControl.Template> 
</local:MyUserControl> 

Si necesita mantener el contenido existente conectado a su código subyacente puede utilizar un DataTemplate a pasar en el contenido externo (en una nuevo DP en MyUserControl) y aplicar esa plantilla a ContentControl en UCAM XAML.

+0

He estado golpeando mi cabeza contra la pared por el mismo problema. Esta respuesta funcionó para mí. ¡Gracias! – mbmcavoy

Cuestiones relacionadas