2010-10-16 117 views
6

裏面我期待以設置UserControl是另一個UserControl在XAML的Content,以同樣的方式,你可以設置一個Button'sContent是什麼。WPF用戶控件另一個用戶控件

比方說,我的「外」 UserControl看起來是這樣的:

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

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

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

而且我想實例是這樣的:

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

如何設計MyUserControl渲染它Content在具體位置?

回答

0

除非我誤解了這個問題,您可以在您的控制中使用並將其內容設置爲您需要的任何內容。

4

您放入UserControl的XAML的所有內容都是其內容,因此您無法通過設置Content屬性注入其他內容。有幾種不同的方法可以處理這個問題。如果你沒有在任何代碼隱藏的MyUserControl你可以擺脫它,並使用類似:

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

    <local:AnotherControl/> 
</ContentControl> 

如果您有後面的代碼不訪問XAML元素直接可以做與現有的控制類似的事情(因爲UC自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> 

如果你需要保持連接到您現有的內容隱藏代碼,你可以使用一個DataTemplate在外部內容傳遞(成MyUserControl上的新DP)並將該模板應用於UC的XAML中的ContentControl。

+0

我一直在同一個問題上撞牆。這個答案對我有用。謝謝! – mbmcavoy 2011-08-23 18:46:31