1

我想用 WPF Treeview 模仿 OSX-Mail 中的 Treeview-Control,但不知道如何开始。在屏幕截图中,“MAILBOXES”和“SMART MAILBOXES”是文件夹。将鼠标悬停在每个文件夹上会淡入“显示”或“隐藏”按钮。单击该按钮会滑出子项(屏幕截图中的“收件箱”、“发送”和“今天”)。如何使用 WPF 获得类似的东西?树视图是一个不错的选择吗?

非常感谢!

截屏

4

1 回答 1

0

StackOverflow 上通常不会回答这样的一般性问题。我会试一试,但我只有时间提供您可以做什么的大纲。

我的经验是不惜一切代价避免使用 TreeView。它只是不符合逻辑并且在搜索节点时它很昂贵。

我认为您可以通过使用 ItemTemplate 是 Expander 控件的ItemsControl获得所需行为。ItemsControl绑定到代表您的文件夹的对象集合。

然后,您可以DataTemplate扩展器的标题来模仿悬停行为。标题将是两个TextBlocks。一个用于标识扩展器,即“MAILBOXES”,另一个用于“显示”/“隐藏”标签。

本质上,“显示”和“隐藏”是一个 TextBlock,其中文本由附加到Expander的IsExpanded属性的DataTrigger设置。如果IsExpanded为 true,则将 Text 设置为“Hide”,如果为 false,则将其设置为“Show”。

然后对于位于每个文件夹中的其余项目,您可以将ItemsControlListBox放入Expander将ItemsControlListBox ItemsSource绑定到每个文件夹中的项目。然后,您可以使用相应的ItemTemplate来设计那些您选择的项目。

于 2012-09-18T16:27:38.433 回答