TreeViewItem이 선택되었을 때 사용되는 DataTemplate을 변경하는 데 문제가 있습니다. 이상적으로는 각 항목에 TextBlock
이 포함 된 다음 선택하면 TextBox
이 포함되어야합니다. 여기 TreeViewItem이 선택되었을 때 템플릿 변경
<Window>
<Window.Resources>
<HierarchicalDataTemplate x:Key="normal"
ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Text}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="selected"
ItemsSource="{Binding Path=Children}">
<TextBox Text="{Binding Path=Text}" />
</HierarchicalDataTemplate>
<Style TargetType="{x:Type TreeViewItem}" x:Key="ContainerStyle">
<Setter Property="ItemTemplate" Value="{StaticResource normal}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="ItemTemplate" Value="{StaticResource selected}" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resource>
<Grid>
<TreeView ItemSource="{Binding Body}" ItemContainerStyle="{StaticResource ContainerStyle}" />
</Grid>
</Window>
무슨 일이 트리의 하나 개의 노드이며, 노드의 텍스트 유형이라는 것이다 객체의 이름. 노드에 바인딩 된 유형이 템플리트가 예상하지 않는 것 같아서 지정된대로 Text
특성 대신 기본 ToString()
바인딩을 사용하고 있습니다.
코드 숨김 파일에서 Window의 DataContext를 설정했습니다. TreeView에 대해 하나의 HierarchicalDataTemplate
을 설정하면 데이터가 올바르게 표시되므로 데이터에 대한 제 Bindings가 정확하다는 것을 알고 있습니다.
TreeViewItem
스타일에 ItemTemplate
이외의 속성을 설정해야한다고 생각합니다. 올바른 속성을 사용하고 있습니까? 아니면 다른 설정을해야합니까?
오타 : "HierarchialDataTemplate는" "해야한다 HierarchicalDataTemplate ". –
@MarkMiller 수정 - 고마워요! – Andy