如何使用WPF中的TabControl在不同选项卡上添加按钮

时间:2010-02-11 15:37:32

标签: c# wpf button tabcontrol tabitem

我已经制作了基本标签,我希望每个标签都有一组不同的按钮,但按钮会添加到主窗口而不是标签。当我转到代码并剪切按钮并将其粘贴到我希望它的选项卡时,它只能用于1个按钮,然后对于第二个按钮,我收到一条错误消息:

“对象TabItem已有一个孩子,无法添加Button.TabItem只能接受一个孩子。”

这就是代码的样子:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="394" Width="570">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0*" />
        <ColumnDefinition Width="548*" />
    </Grid.ColumnDefinitions>
    <TabControl Margin="9,30,11,10" Name="tabControl1" Grid.Column="1" SelectionChanged="tabControl1_SelectionChanged">
        <TabItem Name="Admin" Header="Admin">

        </TabItem>
        <TabItem Name="Staff" Header="Staff" />
        <TabItem Name="Student" Header="Student" />
        <TabItem Name="Diary" Header="Diary" />
        <TabItem Name="Timetables" Header="Timetables" />
        <TabItem Name="Assignments" Header="Assignments" />
        <TabItem Name="Courses" Header="Courses" />
    </TabControl>
    <Menu Height="16" Name="menu1" VerticalAlignment="Top" Grid.Column="1" />
    <Button Grid.Column="1" Height="23" HorizontalAlignment="Left" Margin="18,64,0,0" Name="button1" VerticalAlignment="Top" Width="118">Add/Edit Student</Button>
</Grid>

我想在“管理”标签中实现“button1”

它有效,但当我按第二个按钮时失败

提前致谢

3 个答案:

答案 0 :(得分:6)

添加<StackPanel>,<Grid>, <Border>,等.--任何可以包含多个子元素的元素,就像您<Window>一样。这适用于任何只能接受单个子元素的wpf元素。 Button,ToggleButton等

<TabItem>
<Grid>
.......
</Grid>
</TabItem

答案 1 :(得分:2)

TabItem继承自ContentControl类,它只允许1个对象作为内容,因此您需要首先添加一个允许多个对象的控件,如CanvasGrid ,然后将所有按钮添加到该对象。

答案 2 :(得分:1)

您收到该错误,因为TabItem只能包含一个UIElement作为子级。您将需要使用某种面板(即Grid,DockPanel,StackPanel,Canvas ......)来安排所有的UIElements。