2011-06-15 10 views
1

거대한 양의 텍스트가 포함 된 계층 적 데이터를 표시하는이 프로젝트는 winforms에서 wpf로, winforms treeview는 상자에서 워드 랩핑하지 않고이 작업을 수행하는 방법을 알고 싶습니다. wpf. TreeView의 Items에 단어 줄 바꿈을 사용할 수 있습니까?WPF TreeView : WordWrap

많은 양의 스레드와 Google 검색 결과를 반복했지만 아무런 작동 방법이 없습니다. ScrollViewer.HorizontalScrollBarVisibility = "false"나도 아무데도 가지 않았습니다.

해당 기능이 없다면 어떻게 구현에 접근하겠습니까? 나는 wpf에 대해 매우 익숙하다. 그래서 밀어 넣을 방향을 고맙게 생각한다.

아, 프레임 워크는 3.5이다.

답변

4

당신은 treeview의 노드 템플릿의 루트 컨트롤의 너비를 트리 뷰 자체의 실제 너비에 바인딩해야한다고 생각합니다. 다음과 같은 일이 :

<TreeView x:Name="tv"> 
    <TreeView.ItemTemplate> 
     <DataTemplate TargetType={x:Type TreeViewItem}"> 
     <TextBlock Text="{Binding PropertyToBind}" Width="{Binding ActualWidth, ElementName=tv}" TextWrapping="Wrap"/> 
     </DataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView> 

또한 상대 소스를 사용하여 바인딩 너비를 설정 할 수 있어야한다,하지만 난 구문을 불러올 수 없습니다.

일반적으로 이러한 유형의 문제는 부모 요소 내부에서 요소를 강제로 제한함으로써 해결됩니다 (기술적으로 이미 수행해야 함에도 불구하고). 그냥 생각. 행운을 빕니다.

+0

도움을 주셔서 감사합니다, Adam! ActualWidth 바인딩은 작동하지만 이제는 어떻게 설정했는지 궁금합니다 (ActualWidth - 5) - 구문을 이해할 수 없습니다. MaxWidth = "{바인딩 관계형 소스 = {RelativeSource FindAncestor, AncestorType = {x : 유형 TreeView}}, Path = ActualWidth}"와 같이 TreeView에 바인딩하는 데 사용 된 구성은 다음과 같습니다. 그것은 'Path = ActualWidth - 5'또는 이와 비슷한 것을 쓰도록하지 않을 것이다. 어떻게해야합니까? – Mir

+1

바인딩에서 직접 산술 연산을 할 수 있다고 생각하지 않습니다. 변환기를 포함해야합니다. 참조 : http://www.wpftutorial.net/ValueConverters.html – Adam

+0

결국 값 변환기를 통해 작업 했습니까? 고마워요, Adam. – Mir