So ändern Sie die Grenze Hintergrundfarbe in einer ItemContainerStyle programmgesteuert?

Ich habe ein TreeView und einem eigenen Stil und eigene ItemContainerStyle. In der ItemContainerStyle habe ich eine Grenze mit dem Namen "SelectedRectangle". Das will ich jetzt ändern Sie die Hintergrundfarbe dieses "SelectedRectangle" mit diesem Code (ich habe es gefunden im Internet):

    Border brd = (Border)lstDbTree.Template.FindName("SelectedRectangle", lstDbTree); //dosnt work - returns 'null'
    brd.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#7B7A7C")); //Null Pointer Exception

Ich weiß nicht, wie ich Zugang zu den ItemContainerStyle XAML, um es zu manipulieren programmgesteuert.

Code:

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"));
    }

, Was ich tun will

So ändern Sie die Grenze Hintergrundfarbe in einer ItemContainerStyle programmgesteuert?

Danken ist eine Menge für jede Hilfe.

InformationsquelleAutor Dirk Schiller | 2013-08-25

Schreibe einen Kommentar