2012-01-19 1 views
2

이번에는 제 질문은 소리가 나는 것처럼 간단합니다 ... WPF로 마무리 할 텍스트를 얻으려면 TreeViewItem?WPF TreeViewItem에서 텍스트 줄 바꾸기를 만드는 방법은 무엇입니까?

TextBlock이 하나만있는 간단한 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을 변경 관리 및 텍스트가 지금 잘 랩 있도록 너비를 설정 . 문제는 전폭 항목을 원하지 않는 다른 TreeView에 다른 TreeViewItem에 대해이 ControlTemplate을 사용하고 있다는 것입니다.

내가 생각해 낸 해결책은 간단합니다. 그래서 같은 ControlTemplateGrid.ColumnSpan 속성에 TreeViewItem.Tag 값을 결합했다 :

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

이 날 변경할 수 있습니다 Grid.ColumnSpan 따라서 전체 폭에 중 2 TreeViewItem.Tag 값을 설정하여 TreeViewItem의 일반 폭 행동 또는 1입니다.

+0

는 일부 XAML을 게시 할 수 있을까? –

답변

7

당신이 TreeViewItemsthe default template 보면이 같은 격자 표시됩니다 다른 사람이 Auto에있는 동안 세 번째 열을 볼 수있는

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

는 헤더가에 위치, 사용 가능한 모든 공간을 차지 경계 내부의 두 번째 열 :

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

즉, 열이 머리글만큼 커지므로 제한이 없습니다. 따라서 헤더는 TreeView보다 커집니다.

이 테두리에 Grid.ColumnSpan="2"을 추가하면 세 번째 열도 차지하게됩니다. 이는 얼마나 많은 공간이 남았는지에 따라 제한되므로 텍스트가 줄 바꿈됩니다. 그러나 이것은 전체 너비에 걸쳐 헤더를 확장합니다. 헤더를 선택할 때 약간 이상하게 보일 수 있습니다.물론

당신은 또한 수평 스크롤을 사용하지 않도록 설정해야합니다

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

A screenshot

+0

나는 단순한 재산을 원했지만 트릭을 했어. 고마워. +1 – Sheridan

+0

@Sheridan : 도움이 된 것을 기쁘게 생각합니다 :) 어떤 것들이 기본 템플릿에 하드 코드 된 경우 항상 싫습니다 ... –