私は TreeView を持っており、それは独自の Style であり、独自の ItemContainerStyle です。ItemContainerStyle には、「SelectedRectangle」という名前の境界線があります。次に、このコードを使用して、この「SelectedRectangle」の背景色を変更したいと思います (インターネットで見つけました)。
Border brd = (Border)lstDbTree.Template.FindName("SelectedRectangle", lstDbTree); //dosnt work - returns 'null'
brd.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#7B7A7C")); // Null Pointer Exception
ItemContainerStyle XAML にアクセスしてプログラムで操作する方法がわかりません。
コード:
Shell.xaml
<TreeView DockPanel.Dock="Bottom" Name="lstDbTree"
...
ItemContainerStyle="{StaticResource DbTreeItemStyle}"
...
/>
CoreStyles.xaml
<Style TargetType="TreeViewItem" x:Key="DbTreeItemStyle">
<Setters...>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
...
<Border x:Name="SelectedRectangle" BorderBrush="#44ffffff" BorderThickness="1" Grid.Column="1" CornerRadius="1" IsHitTestVisible="False" Opacity="0" Background="#555355"/>
...
</ControlTemplate>
</Setter.Value>
</Style
Shell.xaml.cs
private void ColorB_OnClick(object sender, RoutedEventArgs e)
{
Border brd = (Border)lstDbTree.Template.FindName("SelectedRectangle", lstDbTree); //dosnt work
brd.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#7B7A7C"));
}
私がしたいこと
助けてくれてありがとう。