Silverlight : 선택시 TreeViewItem 텍스트 색상을 변경하는 방법
-
19-09-2019 - |
문제
HierarchicalDataTemplate 내부에 TextBlock이 있습니다. TreeViewItem을 선택할 때 전경 색상을 빨간색으로 설정해야합니다.
<controls:TreeView Background="#FF939597"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" x:Name="CommentTreeView" Margin="0,0,0,118"
ItemContainerStyle="{StaticResource SectionsTreeViewItemStyle}">
<controls:TreeView.ItemTemplate>
<control:HierarchicalDataTemplate ItemsSource="{Binding SubSections}" ItemContainerStyle="{StaticResource SectionsTreeViewItemStyle}">
<Grid>
<TextBlock x:Name="ItemTextBlock" Margin="0,6,48,0"
<!-- ??? Foreground="Red" ??? if item selected ??? -->
FontSize="11" Text="{Binding Path=Name}"
TextWrapping="Wrap" VerticalAlignment="Top">
</TextBlock>
</Grid>
</control:HierarchicalDataTemplate>
</controls:TreeView.ItemTemplate>
</controls:TreeView>
해결책
Silverlight 용 RelativeSource의 사용자 정의 구현을 사용하여이를 수행 할 수 있습니다.
http://www.codeproject.com/articles/36500/implementing-relatives-binding-in-silverlight.aspx
<UserControl.Resources>
<Converters:BackgroundConverter x:Key="BackgroundConverter"/>
</UserControl.Resources>
<controls:TreeView Background="#FF939597"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" x:Name="CommentTreeView" Margin="0,0,0,118"
ItemContainerStyle="{StaticResource SectionsTreeViewItemStyle}">
<controls:TreeView.ItemTemplate>
<control:HierarchicalDataTemplate ItemsSource="{Binding SubSections}" ItemContainerStyle="{StaticResource SectionsTreeViewItemStyle}">
<Grid>
<TextBlock x:Name="ItemTextBlock" Margin="0,6,48,0"
FontSize="11" Text="{Binding Path=Name}"
TextWrapping="Wrap" VerticalAlignment="Top">
<local:BindingHelper.Binding>
<local:BindingProperties TargetProperty="Foreground" SourceProperty="IsSelected"
Converter="{StaticResource BackgroundConverter}"
RelativeSourceAncestorType="TreeViewItem"/>
</local:BindingHelper.Binding>
</TextBlock>
</Grid>
</control:HierarchicalDataTemplate>
</controls:TreeView.ItemTemplate>
</controls:TreeView>
제휴하지 않습니다 StackOverflow