如何在WPF中仅使用内置手段实现带选项卡的文档界面?

5

我在这里看到了两个关于TDI和C#的帖子。但是它们都没有真正回答我所提出的问题...

既然TDI现在几乎成为标准,我几乎无法想象我必须购买特殊控件(如AvalonDock或SandDock)。 这一定可以通过内置的选项卡控件来实现(?)! 我不需要像停靠和可拖动的选项卡项之类的特殊功能,只需在新选项卡中打开每个表单即可。

就像将每个表单的内容控件放入用户控件中,并按请求(按钮,菜单单击等)添加一个新选项卡并将相应的用户控件放在其中...就像这样。

你会怎么做呢? 这不能太复杂了(即使对我来说),或者我错过了什么?!

非常感谢!


哎呀,我应该标记哪一个作为答案呢?三个答案都可能有效——我现在在试图弄清楚Josh Smith在idursun发布的这篇文章中在做什么。这是一个非常优美的解决方案,但对于像我这样的初学者来说有点难以理解。我想,回答我实际问题最好的是Josh G.的帖子,所以我会标记他的答案……非常感谢你们所有人! - Michael Niemand
2个回答

7
也许Josh Smith关于MVVM的文章可以给你一个设计这种用户界面的想法。那里构建的示例是一种标签式文档界面,因此您可以将其用作起始块。

请注意... Josh Smith的文章是一个很好的参考资料,但它并不容易理解。你需要对WPF的数据绑定有很好的掌握才能把它拼凑起来。 - Josh G
谢谢,考虑到@mad9之前的问题,我认为他正在接近实现MVVM :) - idursun
我完全赞同。MVVM是WPF的一个很棒的工具! - Josh G
非常感谢,我已经有了这篇文章的德语版本(http://msdn.microsoft.com/de-de/magazine/dd419663.aspx),就在我面前打印出来了=) - Michael Niemand

5

这并不难。看起来难是因为有很多不同的做法。

试试这个:

<TabControl x:Name="documentArea"/>

AddForm按钮的处理程序:

private void AddFormClick(object sender, RoutedEventArgs e)
{
    object form = GetNewForm();

    documentArea.Items.Add(form);
}

就是这样。你需要以以下两种方式之一实现GetNewForm()。第一种方式是返回一个显示表单的用户控件。

或者更好的方法是,返回你想要显示的文档。使用DataTemplate来选择用于显示此文档的控件。这种方法设置起来会更加复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接