Silverlight - 指定父级中用户控件的stackpanel内容

时间:2010-09-22 19:00:22

标签: silverlight user-controls layout

我创建了一个名为'RibbonTabX'的用户控件,其中包含一个名为'spMain'的堆栈面板。我想做的是,当我在xaml中声明我的'RibbonTabX'的实例时,在同一个xaml中,我想指定将在子stackPanel'spMain'中的控件。这是代码,它将使我想要做的更清楚:

  <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'控件一样。我有什么想法可以做到这一点吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要创建自定义内容控件,而不是用户控件。

Start with this article

它比用户控件更复杂,因为你必须手工制作一个通用模板,但它们更通用。

答案 1 :(得分:0)

您想使用ContentControl。您可以将内容放在堆栈面板中,而不是指定那些控件进入堆栈面板。让你的RibbonTabX派生自ContentControl而不是UserControl,然后在适当的位置放置<ContentPresenter />,然后功能区的用户可以放入任何内容。

<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>