2010-10-16 16 views
6

Czekam na ustawić UserControl być Content innego UserControl w XAML, w ten sam sposób można ustawić Button'sContent być cokolwiek.UserControl WPF wewnątrz innego UserControl

Powiedzmy moje "zewnętrzny" UserControl wygląda następująco:

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

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

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

I chciałbym instancji w ten sposób:

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

Jak zaprojektować MyUserControl do renderowania to Content w sposób konkretna lokalizacja?

Odpowiedz

0

, chyba że źle zinterpretuję pytanie, możesz użyć go pod kontrolą i ustawić jego treść na wszystko, czego potrzebujesz.

4

Wszystko, co umieścisz w XAML UserControl, to jego zawartość, więc nie możesz wstrzyknąć czegoś innego, ustawiając właściwość Zawartość. Jest kilka sposobów na poradzenie sobie z tym. Jeśli nie masz nic w opóźnieniem kodu dla MyUserControl można po prostu pozbyć się go i używać coś takiego:

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

    <local:AnotherControl/> 
</ContentControl> 

Jeśli masz kod, który nie za dostęp do elementów XAML bezpośrednio można zrobić coś podobnego z istniejącej kontroli (od UC wywodzi 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> 

Jeśli trzeba zachować istniejącą zawartość podłączonego do opóźnieniem kodu można użyć DataTemplate przekazać w treści zewnętrznych (w nowe DP na MyUserControl) i zastosować ten szablon do ContentControl w XAML UC.

+0

Waliłem głową w ścianę o ten sam problem. Ta odpowiedź zadziałała dla mnie. Dziękuję Ci! – mbmcavoy

Powiązane problemy