代码之家  ›  专栏  ›  技术社区  ›  Rob

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

  •  1
  • Rob  · 技术社区  · 15 年前

    我创建了一个名为“ribbontabx”的用户控件,其中包含一个名为“spmain”的stackpanel。我想做的是,当我在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 回复  |  直到 15 年前
        1
  •  1
  •   iCollect.it Ltd    15 年前

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

    Start with this article

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

        2
  •  0
  •   Alex Lo    15 年前

    您想使用ContentControl。与其指定这些控件放在堆栈面板中,还不如将内容放在堆栈面板中。让Ribbontabx从ContentControl派生,而不是从UserControl派生,然后在适当的地方将 <ContentPresenter /> 然后,功能区的用户可以将任何内容放入其中。

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

    以下是最基本的内容控制:

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