2010-10-16 39 views
6

Ich suche ein UserControl einstellen die Content eines anderen UserControl in XAML sein, auf die gleiche Weise können Sie ein Button'sContent sein, alles einstellen.WPF Usercontrol in einem anderen Usercontrol

wir meinen „äußere“, sagen UserControl wie folgt aussieht:

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

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

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

Und ich möchte auf diese Weise instanziiert:

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

Wie ich MyUserControl entwerfe es ist Content in ein machen bestimmter Ort?

Antwort

0

Wenn ich die Frage nicht missverstanden habe, können Sie in Ihrer Kontrolle verwenden und den Inhalt auf alles einstellen, was Sie brauchen.

4

Alles, was Sie in den XAML von UserControl legen, ist der Inhalt, so dass Sie nicht etwas anderes injizieren können, indem Sie die Eigenschaft Content setzen. Es gibt ein paar verschiedene Möglichkeiten, wie Sie damit umgehen können. Wenn Sie Hinterher Code für MyUserControl nichts im haben, können Sie einfach loswerden und verwenden Sie so etwas wie:

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

    <local:AnotherControl/> 
</ContentControl> 

Wenn Sie Code dahinter nicht über die XAML-Elemente direkt zugreifen können Sie tun eine ähnliche Sache mit Ihrer bestehenden Regelung (seit UC leitet sich von Content):

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

Wenn Sie die vorhandenen Inhalte auf Ihren verbunden halten Code-behind können Sie eine Datatemplate verwenden im externen Inhalt zu übergeben (in a neue DP auf MyUserControl) und wenden diese Vorlage auf ein ContentControl im XAML der UC an.

+0

Ich habe meinen Kopf gegen die Wand auf das gleiche Problem geschlagen. Diese Antwort hat für mich funktioniert. Vielen Dank! – mbmcavoy

Verwandte Themen