【问题标题】:Implement open a new tab实施打开一个新选项卡
【发布时间】:2011-04-02 06:40:56
【问题描述】:

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

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

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

【问题讨论】:

标签: c# wpf


【解决方案1】:

这是我使用的代码。

    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 中。

【讨论】:

    【解决方案2】:

    您可以使用 ObservableCollections 轻松做到这一点。

    xml

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

    假设您正在使用 MVVM 的代码

    在你的 ViewModel 中创建一个 EmpList Observablecollection

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

    【讨论】:

      猜你喜欢
      • 2012-11-05
      • 1970-01-01
      • 2019-09-20
      • 2019-04-14
      • 1970-01-01
      • 2022-06-13
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多