下面的文章介绍了如何在WPF中创建动态标签,在每个标签中它只会添加一个文本框。
private TabItem AddTabItem()
{
int count = _tabItems.Count;
// create new tab item
TabItem tab = new TabItem();
tab.Header = string.Format("Tab {0}", count);
tab.Name = string.Format("tab{0}", count);
tab.HeaderTemplate = tabDynamic.FindResource("TabHeader") as DataTemplate;
tab.MouseDoubleClick += new MouseButtonEventHandler(tab_MouseDoubleClick);
// add controls to tab item, this case I added just a textbox
TextBox txt = new TextBox();
txt.Name = "txt";
tab.Content = txt;
// insert tab item right before the last (+) tab item
_tabItems.Insert(count - 1, tab);
return tab;
}
http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF
我可以做些什么来添加一些复杂的控件,使其位置固定而不仅仅是1个文本框?我可以为此目的创建用户控件吗?那么如何将用户控件添加到选项卡控件?
答案 0 :(得分:3)
尝试接下来的步骤:
添加用户控件(比如说在ComplexControl.xaml中)
<UserControl ... >
<Grid>
<Rectangle Width="100" Height="100" Fill="Red"/>
</Grid>
</UserControl>
创建一个类
Public myComplexContolClass
{
//....
}
将它们一起映射,这样当你的应用程序中有一个myComplexContolClass时,它就是来自1的UserControl。地图可以完成 使用DataTemplate:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
...
xmlns:models="clr-namespace: ... .Model"
xmlns:views="clr-namespace: ... .View"
>
<DataTemplate DataType="{x:Type models:myComplexContolClass}">
<views:ComplexControl/>
</DataTemplate>
</ResourceDictionary>
或者
<Window ...
xmlns:models="clr-namespace: ... .Model"
xmlns:views="clr-namespace: ... .View"
>
<Window.Resources>
<DataTemplate DataType="{x:Type models:myComplexContolClass}">
<views:ComplexControl/>
</DataTemplate>
</Window.Resources>
// ...
</Window>
将其添加到您的代码中:
private TabItem AddTabItem()
{
// ...
myComplexContolClass control = new myComplexContolClass();
tab.Content = control;
// ...
}