2010-09-22 31 views
1

我創建了一個名爲'RibbonTabX'的用戶控件,其中包含一個名爲'spMain'的堆棧面板。我想要做的是當我在xaml中聲明我的'RibbonTabX'的一個實例時,在同一個xaml中,我想指定將位於子棧stackPanel'spMain'內的控件。下面是代碼,這將使我想要做的更清楚:Silverlight - 在父級中指定用戶控件的堆棧面板內容

<ribbon:RibbonTabX strHeaderText="Testing 123..."> 
      <ribbon:RibbonTabX.spMain> 
       <sdk:Label Content="Hello" /> 
       <sdk:Label Content="World" /> 
      </ribbon:RibbonTabX.spMain> 
    </ribbon:RibbonTabX> 

在RibbonTabX的父母,我想我的用戶控制「RibbonTabX」中指定的StackPanel的子內容。就像你可以使用'TabItem'控件一樣。任何想法我可以做到這一點?

謝謝!

回答

1

您需要創建自定義內容控件,而不是用戶控件。

Start with this article

它比用戶控制更加複雜,因爲你必須手工工藝爲它的通用模板,但他們更多才多藝。

+0

完美!這正是我需要知道的。謝謝! – Rob 2010-09-22 20:41:52

0

你想使用一個ContentControl。而不是指定這些控件進入堆棧面板,您可能應該將內容放置在堆棧面板中。讓RibbonTabX從ContentControl而不是UserControl派生出來,然後在適當的位置放置<ContentPresenter />,然後Ribbon的用戶可以將任何內容放入其中。

<ribbon:RibbonTabX strHeaderText="Testing 123..."> 
      <StackPanel> 
       <sdk:Label Content="Hello" /> 
       <sdk:Label Content="World" /> 
      </StackPanel> 
</ribbon:RibbonTabX> 

這是最基本的ContentControl中可能:

<ContentControl x:Class="SilverlightControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid x:Name="LayoutRoot" Background="Orange"> 
     <ContentPresenter /> 
    </Grid> 
</ContentControl> 
+0

太好了,謝謝! – Rob 2010-09-22 20:42:16

相關問題