2010-12-06 4 views
2

DataTemplate 및 2 HierarchicalDataTemplates를 사용하여 각 항목에 대한 체크 박스가있는 트리보기가 있습니다. (내 바인딩 목록은 2 또는 3 개의 레벨로 구성되며 체크 상자는 리프 수준에만 표시됩니다. 하나).WPF Treeview - 자식 클릭시 이상한 UI 문제

잎은과 같이 보입니다 : 나는 잎 항목 'TextBlock의 부분 중 하나를 클릭하면

<TreeView ItemsSource="{Binding}"> 
<DataTemplate DataType="{x:Type local:MatchDataLeaf}"> 
    <Grid Margin="3"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="240"/> 
      <ColumnDefinition Width="100"/> 
      <ColumnDefinition Width="150"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="60"/> 
     </Grid.ColumnDefinitions> 

     <StackPanel Grid.Column="0" Orientation="Horizontal"> 
      <CheckBox x:Name="selectCheckBtn" Grid.Column="0" IsChecked="True" Click="select_Click" 
         Tag="{Binding}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TreeViewItem}}}"/> 
      <TextBlock Grid.Column="1" Margin="5,0,0,0" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="12" FontWeight="Bold" Foreground="Black" VerticalAlignment="Center"/> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

내 문제가 발생 - 내가 체크 박스의 모든 것이 OK입니다 클릭합니다. 항목을 클릭하면 전체 트리가 왼쪽으로 이동하고 + 확장 버튼이 숨겨지고 다시 가져올 방법이 없습니다. 컨테이너의 왼쪽에있는 확인란을 정렬하여 컨테이너의 위와 왼쪽에있는 모든 것을 숨 깁니다.

나는 이것이 이상한 UI 문제라는 것을 알고 있으며, 누구든지 전에 이것을 보았는지 의심 스럽다. 그럼 내가 물어 보자 : 어떻게 든 그 클릭을 disalow하는 방법이 있습니까? 항목의 해당 부분을 클릭하면 아무것도 할 WPF 말할 수 있습니까? Textblock의 MouseLeftButtonUp 핸들러에서 Handled를 true로 설정하려고했지만 그다지 유용하지 않습니다.

다른 제안 사항은 환영합니다.이 문제에 대해 어떻게 생각하는지 모르겠습니다. 나에게 ScrollViewer에 전체 TreeView 퍼팅

답변

0

시도는 콘텐츠가 가능한 지역에 맞게 큰하는 것입니다 소리 : 나에게 도움이되지 않았다 ScrollViewer에 추가

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
     <TreeView ..../> 
</ScrollViewer> 
+0

을 -하지만 당신이 맞다 - 나는 방금 만든 모든 너비/높이를 자동으로 설정하고 전체 창을 확장합니다. – user350213

+0

Btw, 아이템의 선택 상태를 아무 것도 아닌 것으로 변경하는 방법이 있습니까? Trigger를 사용하여 선택된 상태의 스타일을 변경할 수 있다는 것을 알고 있지만 어떻게 선택하지 않을 수 있습니까? – user350213

+0

답변을 주셔서 감사합니다! "항목의 선택 상태가 아무 것도 아닐 것"이라는 것이 무슨 뜻인지 잘 모르겠습니다. 다른 주제이므로 다른 질문을 올리는 것이 더 낫습니다. – thumbmunkeys