WPF中的选项卡式文档界面仅使用板载方式?

Posted

技术标签:

【中文标题】WPF中的选项卡式文档界面仅使用板载方式?【英文标题】:tabbed document interface in WPF using only on-board means? 【发布时间】:2009-06-22 12:24:24 【问题描述】:

我在这里看到了两个关于 TDI 和 C# 的主题。他们俩都没有真正回答我的问题......

由于 TDI 现在很像一个标准,我很难想象我必须购买一个特殊的控件(如 AvalonDock 或 SandDock)。 这必须以某种方式内置选项卡控件(?)!我不需要像可停靠和可拖动的 tabitems 这样的特殊功能。只需在新选项卡中打开每个表单。就是这样。

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

你会怎么做?这不可能那么复杂(即使对我来说)还是我错过了什么?!

非常感谢!

【问题讨论】:

好吧,我应该将哪个标记为答案?所有这 3 个都可能工作 - 我目前试图弄清楚 Josh Smith 在 idursun 发布的这篇文章中正在做什么。这是一个非常优雅的解决方案,但对于初学者来说有点难以理解。最能回答我实际问题的是 Josh G. 的帖子,我猜,所以我会标记他的……非常感谢你们所有人! 【参考方案1】:

也许 Josh Smith 的article on MVVM 可以让您了解如何设计这样的用户界面。正在构建的示例有一个选项卡式文档界面,因此您可以将其用作起点。

【讨论】:

被警告... Josh Smith 的文章是一个很好的参考,但它并不容易理解。您需要很好地处理 WPF 的数据绑定才能将其拼凑起来。 谢谢,考虑到@mad9 之前的问题,我认为他离实现 MVVM 越来越近了 :) 我完全赞成。 MVVM 是 WPF 的绝佳工具! 非常感谢,我已经打印了这篇文章的德文版(msdn.microsoft.com/de-de/magazine/dd419663.aspx),就在我面前=)【参考方案2】:

这并不难。这似乎很难,因为有很多不同的方法可以做到这一点。

试试这个:

<TabControl x:Name="documentArea"/>

AddForm 按钮的处理程序:

private void AddFormClick(object sender, RoutedEventArgs e)

    object form = GetNewForm();

    documentArea.Items.Add(form);

就是这样。您必须以两种方式之一实现GetNewForm()。让它返回一个显示表单的用户控件。

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

【讨论】:

以上是关于WPF中的选项卡式文档界面仅使用板载方式?的主要内容,如果未能解决你的问题,请参考以下文章

devenv.exe 选项卡式文档

Dock Windows Forms(选项卡式聊天界面)

如何在选项卡式布局中显示 Android gridview

在选项卡式视图应用程序中滑动手势

获取选项卡式活动的当前选定选项卡

如何更改 MDI Tab 文档菜单中的顺序?