我以前见过这个。我们需要一个专用的标签项目,其上带有'+'符号。像Chrome浏览器中的Silver light Application。像Silverlight应用程序中的Chrome浏览器的选项卡控件
总是有一个标签项目出现在可见的后半部分,一旦你点击它,它就变成一个完整的标签项目。
我以前见过这个。我们需要一个专用的标签项目,其上带有'+'符号。像Chrome浏览器中的Silver light Application。像Silverlight应用程序中的Chrome浏览器的选项卡控件
总是有一个标签项目出现在可见的后半部分,一旦你点击它,它就变成一个完整的标签项目。
这是一个有点虽然回答:P
这里有云:
创建一个名为LinqToVisualTree类。你可以在this post的末尾找到它,并解释它的功能。基本上,它可以让你通过LINQ查询你的可视化树。
要向TabControl中的选项卡行添加任何内容,您需要操作TabPanel,其中包含选项卡的“按钮”。 TabPanel位于System.Windows.Controls.Primitives命名空间中,因此请参考它。
得到的TabPanel我发现的最简单的方法是在命名您的TabItems的至少一个,这样做:
using System.Windows.Controls.Primitives; // Contains TabPanel
using LinqToVisualTree;
void AddPlusButton() {
// Creates a button beside the tabs
var button = new Button()
{
Content = "+",
IsTabStop = false // To prevent keyboard press
};
// Links the Click with the "new tab" function
button.Click += new RoutedEventHandler(btPlus_Click);
// *** HERE IS THE TRICK ***
// Gets the parent TabPanel in the Visual Tree and cast it
var tabpn = tabItem1.Ancestors<TabPanel>().FirstOrDefault() as TabPanel;
// Links the button created
tabpn.Children.Add(button);
}
这里有一个加号按钮的方法:
void btPlus_Click(object sender, RoutedEventArgs e)
{
// Creates a new TabItem
var ti = new TabItem();
ti.Header = "TabAdded";
ti.Content = new TextBlock() { Text = "Tab content!" };
// Links it
tabControl.Items.Add(ti);
}
而已!提示:我刚刚了解到使用Silverlight Spy的TabPanel类。在Google上搜索,我可以通过从TabControl中更改模板样式来找到这样做的方法。
此致敬礼!
感谢您的回复。你正在使用第三方工具,但不喜欢这样做。你能告诉别的方法吗? – Ash 2011-06-11 12:12:04
实际上,尽管LinqToVisualTree是第三方,但它仅仅是类[VisualTreeHelper]的一个“外壳”(http://msdn.microsoft.com/pt-br/library/system.windows.media.visualtreehelper.aspx) ,提供扩展方法来完成这项工作。 您可以直接使用VisualTreeHelper,但我认为使用扩展方法更容易。 – JwJosefy 2011-06-13 17:29:37