【发布时间】:2010-07-22 08:53:40
【问题描述】:
我是 WPF 的新手,我有这种情况:
我有一个应用程序,其中包含一个区域,在该区域中应在不同时间(不同的应用程序状态)显示不同的控件集。
我想知道 WPF 中的方法是什么?
在 winforms 中,我会让控件在运行时可见/不可见。如果控件太多,我会将它们分组到 Panels/UserControls 上并显示/隐藏它们。
我的直觉告诉我在 WPF 中有更好的方法。
【问题讨论】:
我是 WPF 的新手,我有这种情况:
我有一个应用程序,其中包含一个区域,在该区域中应在不同时间(不同的应用程序状态)显示不同的控件集。
我想知道 WPF 中的方法是什么?
在 winforms 中,我会让控件在运行时可见/不可见。如果控件太多,我会将它们分组到 Panels/UserControls 上并显示/隐藏它们。
我的直觉告诉我在 WPF 中有更好的方法。
【问题讨论】:
在 WPF 中有很多选项可以做到这一点。除了通过设置可见性来隐藏和显示单个或一组控件之外,您还可以使用不同的 DataTemplate 来包含每个状态的控件集并在它们之间切换。您所需要的只是一个可以在其上设置 ContentTemplate 的 ContentControl。然后可以使用触发器、绑定、来自代码或使用 ContentTemplateSelector 选择模板来将 ContentTemplate 值切换到不同的 DataTemplate。
【讨论】:
Visibility 属性完美地描述了您以前的 winforms 习惯。
您还需要查看Visual States。这将允许您隐藏/显示多个控件,甚至更改其他属性(即启用状态、字体颜色)。
【讨论】: