具有fullrow选择和动画的WPF Treeview

时间:2012-09-18 16:14:14

标签: wpf treeview

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

非常感谢!

Screenshot

1 个答案:

答案 0 :(得分:0)

通常在StackOverflow上没有回答像这样的通用问题。我会试一试,但我只有时间提供你能做什么的概述。

根据我的经验,不惜一切代价避免使用TreeView。它只是在逻辑上没有表现,在搜索节点时它很昂贵。

我认为您可以使用 ItemsConmp 来获得所需的行为,其中 ItemTemplate Expander 控件。 ItemsControl 绑定到代表您的文件夹的对象集合。

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

基本上,“显示”和“隐藏”是一个TextBlock,其中文本由附加到扩展器<的 IsExpanded 属性的 DataTrigger 设置/ strong>即可。如果 IsExpanded 为true,则将Text设置为“Hide”,如果为false则将其设置为“Show”。

然后,对于位于每个文件夹中的其他项目,您可以在 Expander 中放置 ItemsControl ListBox 。将 ItemsControl ListBox ItemsSource 绑定到每个文件夹中的项目。然后,您可以使用相应的 ItemTemplate 来设计您选择的项目。