2

パネルにTreeView表示アイテムを作成する方法を探しています。Canvas

<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つまり、Root {Left = 50、Top = 10}(ここでは機能します)にAlpha {Left = 0、Top = 0}が含まれている場合、Rootは[50,10]に、Alphaは[0,0]になります。 ](座標は絶対Canvasです)。

TreeViewItemルートだけが正しく配置される理由は、私が使用するためTreeView.ItemsPanelです。代わりに使うべきだと感じていますが、どうすればいいのTreeView.ItemContainerStyleかわかりません。

もちろん、どんな助けでもありがたいです。できれば、HierarchicalDataTemplateあまりにも組み込むことをお勧めします。_私はソリューションをに接続する方法を知っていますBinding

4

1 に答える 1

4

TreeViewItemsそれぞれ独自のパネルを持っているので、TreeViewと アイテムのキャンバスを変更する必要があります。これを行うには、リソースまたは を介し​​て暗黙的にパネルを変更するスタイルを適用しますItemContainerStyle

<Style TargetType="TreeViewItem">
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <TreeViewItem.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas />
                </ItemsPanelTemplate>
            </TreeViewItem.ItemsPanel>
        </Setter.Value>
    </Setter>
</Style>
于 2012-02-29T23:58:04.260 に答える