Silverlight选项卡控件 - 一个选项卡上的多个控件

时间:2013-03-27 15:18:50

标签: silverlight xaml tabcontrol

我在Silverlight 5 - VS 2012工作,遇到了一个有趣的问题。

我有一个带有6个标签的Tab Control。每个选项卡都需要包含多个控件。但是,我只能在每个标签上放置一个控件。这似乎不是一个太大的问题,但我不知道如何将多个控件添加到单个选项卡。

我需要修改属性设置吗?任何信息将不胜感激。

提前谢谢! 埃里克

这是我的XAML: - 注意:我想用数据网格向Tab添加一个按钮。

<sdk:TabControl x:Name="tabMain" HorizontalAlignment="Left" Height="307" Margin="176,452,0,0" VerticalAlignment="Top" Width="817" TabStripPlacement="Left">
        <sdk:TabItem Header="Home">
            <Grid/>
        </sdk:TabItem>
        <sdk:TabItem x:Name="tabGatelets" Header="Gatelets" Loaded="tabGatelets_Loaded" GotFocus="tabGatelets_GotFocus">
            <sdk:DataGrid x:Name="grdGatelets" HorizontalAlignment="Left" Height="279" VerticalAlignment="Top" Width="700" Margin="12,0,0,0" AlternatingRowBackground="#FFB4CDCD" AutoGenerateColumns="False" ItemsSource="{Binding Gatelets}">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
                    <sdk:DataGridTextColumn Header="URL" Binding="{Binding Path=Url}" />
                    <sdk:DataGridTextColumn Header="Binding" Binding="{Binding Path=Binding}" />
                    <sdk:DataGridTextColumn Header="Applications" Binding="{Binding Path=Applications}" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </sdk:TabItem>
        <sdk:TabItem Header="Applications">
            <Button x:Name="btnApplications" Content="Applications" HorizontalAlignment="Left" Height="24" VerticalAlignment="Top" Width="89" Margin="357,51,0,0"/>
        </sdk:TabItem>
        <sdk:TabItem Header="Auditing">
            <Button x:Name="btnAudits" Content="Audits" HorizontalAlignment="Left" Height="24" VerticalAlignment="Top" Width="69" Margin="197,133,0,0"/>
        </sdk:TabItem>
        <sdk:TabItem Header="Tracing">
            <Button x:Name="btnTracing" Content="Tracing" HorizontalAlignment="Left" Height="26" VerticalAlignment="Top" Width="92" Margin="193,256,0,0"/>
        </sdk:TabItem>
        <sdk:TabItem Header="About">
            <TextBlock HorizontalAlignment="Left" Height="295" TextWrapping="Wrap" Text="This is where we put stuff about the application." VerticalAlignment="Top" Width="486"/>
        </sdk:TabItem>
    </sdk:TabControl>

2 个答案:

答案 0 :(得分:0)

您需要在每个标签控件中添加网格,然后将您的内容添加到网格中。 有关使用网格控件的文章,请参阅以下链接。

http://www.silverlightshow.net/items/Using-the-Grid-control-in-Silverlight-2-Beta-1.aspx

这可以解决您遇到的问题。

答案 1 :(得分:0)

你已经得到了答案,但只是为了澄清一般问题:

XAML中的元素可以有一个内容子元素,也可以有多个元素(或者没有元素),具体取决于它们的类型。

TabItem只能包含一个内容子项,这就是为什么当您尝试添加多个时,它抱怨已经设置了Content属性。其他只能包含一个Content元素的项目包括ContentControl,Button等等。

允许多个孩子的大部分内容都是Panels,专门设计用于为多个孩子执行布局。主要是Grid(执行行/列布局)和StackPanel(它只是水平或垂直堆叠子项)。还有其他一些像WrapPanel(堆叠但如果空间用完则包装),这可能很有用。

因此,您必须将某种Panel放入TabItem才能拥有多个子级。这样可以巧妙地分离布局逻辑:TabItem只需要知道它可以容纳某些东西,如果你想要多个子代,你可以根据你想要的布局来切换面板类型。