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
퍼팅
을 -하지만 당신이 맞다 - 나는 방금 만든 모든 너비/높이를 자동으로 설정하고 전체 창을 확장합니다. – user350213
Btw, 아이템의 선택 상태를 아무 것도 아닌 것으로 변경하는 방법이 있습니까? Trigger를 사용하여 선택된 상태의 스타일을 변경할 수 있다는 것을 알고 있지만 어떻게 선택하지 않을 수 있습니까? – user350213
답변을 주셔서 감사합니다! "항목의 선택 상태가 아무 것도 아닐 것"이라는 것이 무슨 뜻인지 잘 모르겠습니다. 다른 주제이므로 다른 질문을 올리는 것이 더 낫습니다. – thumbmunkeys