在WPF C#中向现有选项卡控件添加选项卡。

4

我正在尝试在WPF的标签控件中添加选项卡,但运行时控件上没有任何内容显示。我已经尝试按照我看到的示例进行操作,但目前这就是我的代码,但它并不起作用。

_myConnection.Open();
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
    MessageBox.Show(myReader["SectionName"].ToString());
    TabItem newTabItem = new TabItem
    {
        Header = myReader["SectionName"].ToString(),
        Name = myReader["SectionID"].ToString()
    };
    TabMain.Items.Add(newTabItem);
}
_myConnection.Close();
TabMain.SelectedIndex = 0;
2个回答

3
您可以使用以下代码动态添加选项卡。
将以下代码添加到全局声明选项卡控件实例中。
TabControl tbControl;

现在,在选项卡控件的加载事件中添加以下代码。
private void tbCtrl_Loaded(object sender, RoutedEventArgs e)
        {
            tbControl = (sender as TabControl);
        }

我已经使用按钮为现有的选项卡控件添加新标签。
private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            TabItem newTabItem = new TabItem
            {
                Header = "Test",
                Name = "Test"
            };
            tbControl.Items.Add(newTabItem);
        }

以下是我的选项卡控件XAML视图。

<TabControl  x:Name="tbCtrl" HorizontalAlignment="Left" Height="270" Margin="54,36,0,0" VerticalAlignment="Top" Width="524" Loaded="tbCtrl_Loaded">
            <TabItem Header="Tab - 01">
                <Grid Background="#FFE5E5E5">
                    <Button x:Name="btnAdd" Content="Add New Tab" HorizontalAlignment="Left" Margin="68,95,0,0" VerticalAlignment="Top" Width="109" Height="29" Click="btnAdd_Click"/>
                </Grid>
            </TabItem>
        </TabControl>

最后,使用此方法您可以动态地向现有选项卡控件添加任意数量的选项卡。
希望这能满足您的需求。

1
也许是您的数据库数值有问题?我只是写了一个最简单的for循环进行测试,这个方法可行(只使用了TabControl和XAML上的OnLoaded事件)。
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        for (int i = 1; i <= 3; i++)
        {
            var item = new TabItem {Header = i.ToString(), Name = $"tab{i}"};
            TabMain.Items.Add(item);
        }
    }

我肯定还有其他问题,因为这对我也不起作用。我是WPF的新手。我已经使用winforms很长一段时间了。现在我只有一个简单的标签,用于tabcontrol。 <TabControl x:Name ="TabMain" Margin="0,204,0,-444"></TabControl> - Jeebwise
如果您按原样使用我的方法,请确保在XAML中添加此事件处理程序定义:<Window ...Loaded="Window_Loaded"> - Todd Sprang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接