【问题标题】:WPF - Content section controlWPF - 内容部分控件
【发布时间】:2010-12-12 01:57:20
【问题描述】:

我是 WPF 新手,正在努力寻找合适的控件。

我正在编写一个包含两个部分的 WPF 应用程序。左侧是类似于 Outlook 的侧边栏(Odyssey 控件)。

对于其他一切,我想要一个控件,我可以根据侧栏中的内容轻松交换其内容。

因此,用户在侧栏中选择一个选项,主部分中的所有控件都会更改。

如果我在 Windows 窗体中编写此内容,我可以创建几个面板,然后显示相关的面板(并隐藏其他面板)。当我在 WPF 中尝试此操作时,您可以看到下面面板的内容。我知道我可以让它们不可见,但我感觉我可能会以错误的方式处理这个问题。

所以问题来了。 (在 WPF 中)处理应用程序内容部分更改的最佳方式是什么。

【问题讨论】:

    标签: c# wpf visual-studio-2008 .net-3.5


    【解决方案1】:

    根据您的示例(根据在侧面板中选择的内容切换显示的内容),我建议重新设置 TabControl 的样式,因为即使看起来不像,这确实是选项卡切换。查看this 以获得一个不错的示例,将TabStripPlacement 设置为左​​,您将有一个良好的开端。

    根据您的数据设置方式,Master-Detail 模式可能是另一个不错的选择。

    如果您想以编程方式切换所有内容,您需要为 UI“面板”使用 ContentPresenter 和 DataTemplates。 Josh Smith 的 This article 是关于 MVVM 的,但他的示例应用程序基本上就是您要寻找的模式。

    【讨论】:

    • TabControl 的问题是 UI 允许用户在面板之间切换。我需要以编程方式控制它,甚至不显示在 UI 中。
    • 对不起,来自“所以用户在侧栏中选择了一个选项,主要部分中的所有控件都会改变。”我认为是用户控制了更改。如果它正在以编程方式更改,请参阅我的补充。