0

我想像 Mac NSOutlineView 一样设置 TreeView 的样式。

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

主要特点是:

  1. TreeView全宽突出显示所选项目
  2. 背景颜色
  3. 根标题项目的不同样式

我相信我可以找到 2 和 3,但找不到与 1 相关的任何东西。

好像我真的做不到,但我会和 Blend 一起玩。绘图没有代码访问权限吗?像这里是一个框替换行绘图代码?我刚才在 wxPython 中使用 AGW 的纯 python HyperTreeList 做了一个原型,看起来一样,但不幸的是拖放有严重的图形/刷新问题。

4

2 回答 2

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>

在此处输入图像描述

于 2013-04-04T14:06:08.400 回答
0

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

Blend 下的快速测试带来了以下结果:

对于父母:

在此处输入图像描述

对于孩子:

在此处输入图像描述

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

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

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

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

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

在此处输入图像描述

(抱歉没看清楚你最后的评论,最后我的结果和你的很像)

在 Blend 哪里做:

在此处输入图像描述

于 2013-04-04T13:08:07.213 回答