WPF TreeView的样式与Mac NSOutlineView类似

时间:2013-04-04 13:01:56

标签: wpf treeview

我喜欢像Mac NSOutlineView一样设置TreeView样式。

http://s3.amazonaws.com/cocoacontrols_production/osx_screens/44/full.png?1299027729

关键特征是:

  1. 所选项目的TreeView全宽突出显示
  2. 背景颜色
  3. 根标题项的不同样式
  4. 我相信我可以追踪2和3,但无法找到与1号相关的任何内容。

    似乎我真的无法做到,但我会玩Blend。是否没有代码访问绘图?像这里是一个盒子替换行绘图代码?我刚刚在wxPython中使用AGW的纯python HyperTreeList制作了一个原型,看起来相同,但遗憾的是拖放有严重的图形/刷新问题。

2 个答案:

答案 0 :(得分:1)

我刚刚在Mongoose存储库上推送了一个TreeViewItem样式,可以满足您的需求。

您可以在此处找到它:StretchedTreeViewItemControlTemplate

以下是示例代码:

<TreeView ItemContainerStyle="{StaticResource StretchedTreeViewItemControlTemplate}">
    <TreeViewItem Header="Item 1">
        <TreeViewItem Header="Item 1.1">
            <TreeViewItem.Style>
                <Style BasedOn="{StaticResource StretchedTreeViewItemControlTemplate}" TargetType="{x:Type TreeViewItem}">
                    <Setter Property="FontSize" Value="15" />
                </Style>
            </TreeViewItem.Style>
        </TreeViewItem>
    </TreeViewItem>
    <TreeViewItem Header="Item 2" Background="AntiqueWhite" />
</TreeView>

enter image description here

答案 1 :(得分:0)

ItemsControl.ItemContainerStyle会合适吗? http://msdn.microsoft.com/fr-fr/library/system.windows.controls.itemscontrol.itemcontainerstyle(v=vs.85).aspx

Blend下的快速测试带来了以下内容:

对于父母:

enter image description here

对于孩子:

enter image description here

请注意,它不均匀,看起来不太好。

有人可能会问为什么不将它拉到左边界?我想这是不可能的(从我在Blend上看到的),除非你重新创建大部分模板。 如果它们的选择器左侧将对齐到相同的水平值,这肯定会破坏项目之间的分层外观。

现在另一件事是,即使你这样做(按照你的要求),扩展器三角形也会丢失在一堆蓝色......我认为糟糕的用户体验中。

最后,您的控件看起来更像是ListBox而不是TreeView。

无论如何,这是程序(我编辑了TreeView的ItemContainerStyleTemplate)

enter image description here

(抱歉没读好你的上一条评论,最后我的结果非常像你的)

Blend中的位置:

enter image description here