C# 实现打开一个新选项卡

C# 实现打开一个新选项卡,c#,wpf,C#,Wpf,在C#/WPF中,如何实现一个可以打开/关闭新选项卡的应用程序?我想我必须创建一个“模板”用户控件,并以编程方式创建一个新的控件实例(选项卡项)并将其添加到选项卡控件中 我是C#/WPF的新手,那么我该如何开始呢 另一件事是,当我没有ID时,如何修改或访问子控件。这是我使用的代码 private void addtabbutton_Click(object sender, RoutedEventArgs e) { // We use tabItem1 and co

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

我是C#/WPF的新手,那么我该如何开始呢


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

这是我使用的代码

    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);
    }
private void addtabbutton\单击(对象发送者,路由目标)
{
//我们使用tabItem1和codebox作为新对象的模板。
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中。

您可以通过ObservableCollections轻松完成此操作

xaml


代码分析您正在使用的MVVM

在ViewModel中创建EmpList Observablecollection

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

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