我在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>
答案 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只需要知道它可以容纳某些东西,如果你想要多个子代,你可以根据你想要的布局来切换面板类型。