实现打开一个新选项卡

时间:2010-08-22 13:08:16

标签: c# wpf

我怎样才能在C#/ WPF中实现一个可以打开/关闭新标签的应用程序?我想我将不得不以编程方式创建一个“模板”用户控件,创建一个新的控件实例(选项卡项)并将其添加到选项卡控件中?

我是C#/ WPF的新手,所以我该如何开始使用它?

另一件事是当我没有ID时如何修改或访问子控件。

3 个答案:

答案 0 :(得分:2)

此链接中的示例或多或少地完全符合您的要求:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

这也是MVVM的一个很好的介绍。

答案 1 :(得分:1)

您可以使用ObservableCollections非常轻松地完成此任务。

xaml

    <TabControl ItemsSource="{Binding EmpList }">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding FirstName }"></TextBlock>
            </DataTemplate>
        </TabControl.ItemTemplate>
    </TabControl>

代码假设您正在使用MVVM

在ViewModel中创建一个EmpList Observablecollection

因此,当您在Observablecollection中添加新对象时,选项卡控件会侦听更改并为您添加新选项卡。

答案 2 :(得分:0)

这是我使用的代码。

    private void addtabbutton_Click(object sender, RoutedEventArgs e)
    {
        // We use tabItem1 and codebox as template<typename T> for the new objects.
        var tabitem = new System.Windows.Controls.TabItem();
        tabitem.ContextMenu = tabItem1.ContextMenu;
        tabitem.ContextMenuClosing += tabItem1_ContextMenuClosing;
        tabitem.ContextMenuOpening += tabItem1_ContextMenuOpening;
        tabitem.Header = "Code" + NewTabItemIndex.ToString();
        tabitem.Height = tabItem1.Height;
        tabitem.Width = tabItem1.Width;
        tabitem.HorizontalAlignment = tabItem1.HorizontalAlignment;
        tabitem.VerticalAlignment = tabItem1.VerticalAlignment;
        tabitem.DataContext = tabItem1.DataContext;
        var textbox = new System.Windows.Controls.TextBox();
        tabitem.Content = textbox;
        textbox.DataContext = codebox.DataContext;
        textbox.LayoutTransform = codebox.LayoutTransform;
        textbox.AcceptsReturn = true;
        textbox.AcceptsTab = true;
        textbox.Height = this.codebox.Height;
        textbox.HorizontalAlignment = codebox.HorizontalAlignment;
        textbox.VerticalAlignment = codebox.VerticalAlignment;
        NewTabItemIndex++;
        this.tabControl1.Items.Add(tabitem);
    }

您可以看到我从框中的一个标签项tabItem1开始。然后我基本上将它的特征复制到一个新的TabItem中。然后我将TabItem添加到我的TabControl中。