首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使TreeView.ItemsPanel成为画布

使TreeView.ItemsPanel成为画布
EN

Stack Overflow用户
提问于 2012-03-01 01:38:02
回答 1查看 2.1K关注 0票数 2

我正在寻找一种方法来使我的TreeViewCanvas面板中显示项目。

代码语言:javascript
复制
<TreeView>
    <TreeView.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas IsItemsHost="True"/>
        </ItemsPanelTemplate>
    </TreeView.ItemsPanel>
    <TreeViewItem Header="Root" IsExpanded="True" Canvas.Left="50" Canvas.Top="20">
        <TreeViewItem Header="Alpha" Canvas.Left="10" Canvas.Top="50">
            <TreeViewItem Header="Sub"/>
        </TreeViewItem>
        <TreeViewItem Header="Beta"/>
        <TreeViewItem Header="Gamma"/>
    </TreeViewItem>
</TreeView>

这个解决方案允许我在根TreeViewItem之间移动,但我希望TreeView中的每一项都要遵守Canvas附加的属性。我的意思是,当根{Left = 50,0,0 = 10} (在这里有效)包含Alpha {Left = 0,Top=0}时,根将位于50,10,Alpha位于Alpha。

之所以只有根TreeViewItem正确地放在自己的位置,是因为我使用了TreeView.ItemsPanel。我有一种感觉,我应该使用TreeView.ItemContainerStyle,但我真的不知道怎么做。

当然,任何帮助都是非常感谢的,最好也结合HierarchicalDataTemplate,这样_I就知道如何将解决方案与Binding连接起来。

EN

回答 1

Stack Overflow用户

发布于 2012-03-01 07:58:04

TreeViewItems布局自己的子项,每个子项都有自己的面板,因此您需要更改TreeView上的画布和项。为此,可以通过资源或ItemContainerStyle隐式地应用更改面板的样式。

代码语言:javascript
复制
<Style TargetType="TreeViewItem">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <TreeViewItem.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas />
                </ItemsPanelTemplate>
            </TreeViewItem.ItemsPanel>
        </Setter.Value>
    </Setter>
</Style>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9503928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档