我怎样才能在C#/ WPF中实现一个可以打开/关闭新标签的应用程序?我想我将不得不以编程方式创建一个“模板”用户控件,创建一个新的控件实例(选项卡项)并将其添加到选项卡控件中?
我是C#/ WPF的新手,所以我该如何开始使用它?
另一件事是当我没有ID时如何修改或访问子控件。
答案 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中。