2012-08-28 2 views
0

WPF에서 telerik TreeView를 사용하고 있으며 노드를 표시하기 위해 HierarchicalDataTemplate을 사용하고 있습니다. 노드는 일치 항목을 나타냅니다.이 항목은 단지 왼쪽, 오른쪽 만, 같거나 같지 않음 (트리 기반 비교)입니다. 나는 현재 DataTemplateSelector를 사용하고부모 컨트롤의 크기를 기준으로 데이터 템플릿의 너비를 설정하십시오.

모두 유사하게하는, 네 개의 템플릿 중 하나를 선택합니다 다음

<HierarchicalDataTemplate x:Key="EqualTreeItemTemplate" ItemsSource="{Binding}"> 
     <Grid Name="rowGrid" HorizontalAlignment="Stretch" Height="Auto" d:DataContext="{d:DesignInstance Carbon:ICarbonComparisonPair }"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="16" /> 
       <ColumnDefinition Width="*" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <Path Data="F1M574.042,314.611L533.8,344.398 522.251,328.798 515.235,333.988 526.786,349.593 526.782,349.596 531.978,356.603 579.235,321.622 574.042,314.611z" Stretch="Uniform" Fill="#FF000000" Width="16" Height="16" VerticalAlignment="Center" Margin="0,0,0,0" /> 
      <TextBlock Grid.Column="1" Text="{Binding ObjectName}" Style="{StaticResource ObjectNameStyle}" Margin="4,0,0,0" /> 
      <TextBlock Grid.Column="2" Text="{Binding ObjectName}" Style="{StaticResource ObjectNameStyle}" Margin="4,0,0,0" /> 
     </Grid> 
    </HierarchicalDataTemplate> 

나는이 항목의 내용 영역에 따라 다른 폭이라고하는 문제를 항목이 나타나는 트리의 레벨입니다. 즉, 내가 가지고있는 열이 정렬되지 않음을 의미합니다. 오른쪽 열의 텍스트가 확장되는 트리의 각 수준에 대해 오른쪽으로 조금씩 이동합니다.

오른쪽 그리드 열의 폭을 그리드의 자연 영역의 50 %가 아닌 전체적으로 트리 컨트롤 크기의 50 %로 지정하고 싶습니다. RelativeSource 바인딩을 사용하여이 작업을 수행 할 수 있다고 생각했지만 실제로 작동하지 않는 것처럼 보입니다. XAML에서이를 수행 할 수있는 방법이 있습니까? 아니면 코드 숨김에 의존해야합니까?

답변

1

올바르게 이해한다면 열 인덱스 2가 모든 항목에 정렬되기를 원하십니까?

TreeListView 컨트롤을 확인하고 필요한 항목이 있는지 확인하십시오.

실버 데모 (당신처럼 보이는 것을 볼 수 있습니다 만, 그래서 - WPF 버전이 거의 동일) here

[편집 - 더 많은 정보] ColumnDefinition의 SharedGroupName 속성은 덕분에 유혹하지만, 들여 쓰기, 그것은 제대로 작동하지 않을 것입니다 - 당신은 1 열 또는 2 열의 내용이 모두 동일하게 끝날 것입니다,하지만 성가신 들여 쓰기는 여전히 그것을 버립니다. ListView의 View 속성을 확인하십시오. 나는 Telerik TreeListView가 구현과 비슷하지 않다면 적어도 같은 정신으로 있다고 생각한다.

Here's a decent writeup 사용 방법에 대해. (아이러니하게도 나는 그 페이지를 "TreeGridList"라는 폴더에 북마크 해 놓았다. 그래서 어떤 점에서 나는 비슷한 것을 이루기 위해 그렇게 할 생각을 가지고 있었다.)

+0

나는 그 하나를 보았지만, 나는 길을 찾고 있었다. WPF 지식을 확장하려고하기 때문에 부분적으로 TreeView에서 수행하십시오. 하지만 패배를 인정하고 TreeListView와 함께 할 수 있습니다. 감사. –

관련 문제