2011-07-06 6 views
2

最も深いTreeViewItemノードの左インデントを減らすにはどうすればよいですか?何らかの理由でWPFは、このインデントを、最も深いノードを除くすべてのノードでかなり増加させるようです。ウィンドウXPのツリービューの実装を見ると、各深度には同じ左マージンがあります。最も深いノードのTreeViewItemのインデントを減らす

検索しましたが、実現する実装が見つからないようです。まだ可能です。

答えて

4

UPDATE:ここ

は参照のための問題の写真です...

enter image description here

そして、ここでは、あなたが(おそらく)しているものの絵であるソリューションを修正期待して...のための

enter image description here

注:LIS 2番目のスクリーンショットの左側にさらにファイルが表示されます。

これを掘り下げた後、私はデフォルトのTreeViewItemテンプレートの欠陥とみなします。これを修正し、必要な調整を加えるには、独自のTreeViewItemテンプレートを用意する必要があります。 ... this SO answerからデフォルトツリービューアイテムのテンプレートを使用して、あなたのためにそれを行う必要があります

あなたはこれを変更する必要が

...これに

<Trigger Property="HasItems" Value="false"> 
    <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> 
</Trigger> 

...

<Trigger Property="HasItems" Value="false"> 
    <Setter Property="Visibility" TargetName="Expander" Value="Collapsed"/> 
</Trigger> 

を開始。デフォルトでは、システムはエキスパンダーのために19ピクセルのスペースを残しています。エキスパンダーはリーフレベルでは不要なので、非表示にする必要はありません。

+0

マージンが適用された 'TreeViewItem'をクリックすると、バックグラウンドはそれと共に移動しません。したがって、マージンが適用されていない背景色になります。 – gcso

+0

私はあなたが選択したTreeViewItemのハイライトについて話していると仮定しています。もしそうなら、それは理にかなっています。最善の策はおそらくTreeViewItemスタイルをオーバーライドすることです。それはあなたにそれを完全に制御させるでしょう。ここにSOのサンプルがあります:http://stackoverflow.com/questions/4709450/custom-wpf-treeviewitem-style-is-behaving-incorrectly-when-databound –

+1

ええ、私が投稿した元の回答はあまりにも単純すぎました。これを行う唯一の方法は、新しいTreeViewItemテンプレートを提供することです。私は正しい解決策で投稿を修正しました。 –

関連する問題