2010-09-22 34 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

相关问题