내 wpf 응용 프로그램에서 트리보기를 구현했습니다. 그것은 데이터를 잘 표시하지만, 이제 선택한 트리 뷰 항목 주위에 테두리가 나타나길 원합니다. 그래서 경계 컨트롤 안에 텍스트 블록 컨트롤이있는 트리 뷰 헤더 컨테이너를 지정했습니다. 테두리가 올바르게 표시되지만 트리보기 항목의 속성 인 IsSelected
에 따라 색이 변경되지 않습니다.TreeViewItem의 IsSelected 속성에 대한 트리거가 xaml에서 작동하지 않습니다?
<Style TargetType="TreeViewItem" x:Key="StyleTreeViewItemContainer">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="Background" Value="White"></Setter>
</Style>
<TreeView Grid.Row="3" x:Name="TreeViewServer" Panel.ZIndex="0" ItemContainerStyle="{StaticResource StyleTreeViewItemContainer}">
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" DataType="{x:Type ViewModels:ServerTreeViewItemModel}">
<TreeViewItem AllowDrop="{Binding AllowDrop}" Margin="{StaticResource MarginTreeViewItem}" HorizontalContentAlignment="Left" PreviewMouseDown="TreeViewItemServer_PreviewMouseDown" HorizontalAlignment="Left" FontSize="{StaticResource MediumFontSize}" Drop="TreeViewItem_Drop" >
<TreeViewItem.Header>
<Border BorderBrush="{Binding Background, RelativeSource={RelativeSource AncestorType=TreeViewItem}}" BorderThickness="1">
<TextBlock Text="{Binding Path=Text}"></TextBlock>
</Border>
</TreeViewItem.Header>
</TreeViewItem>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
에 TreeView.Resources의 암시 적 스타일은 아마 무시 추가하는
StyleTreeViewItemContainer
에ItemContainerStyle
의 기반 : 여기 내가 사용하는 XAML입니다 ItemContainerStyle. – Clemens