2012-01-19 30 views
2

今回は、私の質問はとても簡単です... WPFでテキストを折り返す方法を教えてくださいTreeViewItemWPF TreeViewItemでテキストを折り返す方法は?

TextBlockが1つの単純なHierarchicalDataTemplateです。

<TextBlock Text="{Binding Value}" TextWrapping="Wrap" /> 

テキストが折り返されません。

私はTreeViewActualWidthTextBlockWidthを結合しようとしたが、それは、テキストの折り返しを作るもののTreeViewPaddingを持っているので、TreeViewItemWidthTreeViewに収まりません。 TreeViewItemActualWidthへの結合は、(驚くことではないが)同じ効果を有する。もう一つの欠点は、テキストが小さい項目でも、TreeView境界の外側に伸びていることです。

<TextBlock Text="{Binding Value}" TextWrapping="Wrap" Width="{Binding ActualWidth, 
ElementName=TreeView}" /> 

確かに私はそれを自動的に認識していないと信じてすることはできません...何とかTreeViewの境界のTreeViewItemを知らせるように、より良い方法がなければなりません。しかし、私はこれをどのようにすることができますか? HBの答えに

UPDATE >>>

おかげで、私は彼がControlTemplateで言及BdBorder上2へGrid.ColumnSpanを変更するために管理し、テキストは今うまくラップするように、幅を設定しました。問題は、他のTreeViewItemのを他のTreeViewに使用していることです。ここでは全幅のアイテムは必要ありません。

私が思いついた解決策は簡単です。私はそうのようなControlTemplateGrid.ColumnSpanプロパティにTreeViewItem.Tag値を結合した:

<Border Grid.ColumnSpan="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}" 
Name="Bd" Grid.Column="1" ... /> 

は、これは私が2のいずれかにTreeViewItem.Tag値を設定することにより、Grid.ColumnSpanので、TreeViewItemの全幅または通常の幅の動作を変更することができますまたはそれぞれ1である。

+0

あなたは、いくつかのXAMLを投稿できますか? –

答えて

7

あなたがTreeViewItemsthe default templateを見れば、あなたはこのようにグリッドが表示されます:あなたは3番目の列を見ることができるように

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition MinWidth="19" 
          Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <!-- ... --> 

は、他の人がAutoにある一方で、ヘッダが中に配置され、すべての利用可能なスペースを取ります境界内部第二カラム:

<Border Name="Bd" 
     Grid.Column="1" 
     ... 

これは、列がそれには制限がなく、ヘッダほど大きくなることを意味します。したがって、ヘッダーはちょうどTreeViewより大きくなります。

この境界線にGrid.ColumnSpan="2"を追加すると、3番目の列も占有されます。これは、どれだけのスペースが残っているかによって制限されるため、テキストが折り返されます。ただし、これを選択すると少し奇妙に見えるかもしれない全幅にわたってヘッダーが拡張されます。もちろん

あなたはまた、水平方向のスクロールを無効にする必要があります:

<TreeView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ... 

A screenshot

+0

私は単純な不動産を望んでいましたが、それはトリックでした、ありがとうございました。 +1 – Sheridan

+0

@Sheridan:喜んで助けました:)特定のものがデフォルトのテンプレートでハードコードされている場合は、常に嫌です。 –

関連する問題