2015-07-17 3 views
1

Я пытаюсь установить красный цвет выбранного элемента на TreeView:Как установить цвет выбранного элемента в TreeView

<TreeView x:Name="tvVisual" Grid.Row="0" Grid.RowSpan="2" 
        VirtualizingStackPanel.IsVirtualizing="True" 
ItemsSource="{Binding Childrens,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"  
        VirtualizingStackPanel.VirtualizationMode="Recycling" 
        > 
      <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate 
ItemsSource="{Binding Childs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> 
        <TextBlock Text="{Binding Path=Value.Name}"/> 
       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 


      <TreeView.ItemContainerStyle> 
       <Style TargetType="{x:Type TreeViewItem}" > 
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />       
        <Setter Property="FontWeight" Value="Normal" />        

        <Style.Triggers> 
         <Trigger Property="IsSelected" Value="True"> 
          <Setter Property="BorderBrush" Value="Red"/> 
          <Setter Property="Background" Value="Bisque"/> 
         </Trigger> 

         <!-- Selected but does not have the focus --> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="True"/> 
           <Condition Property="IsSelectionActive" Value="False"/> 
          </MultiTrigger.Conditions> 
          <Setter Property="BorderBrush" Value="Red"/> 
         </MultiTrigger> 
        </Style.Triggers>       
       </Style> 
      </TreeView.ItemContainerStyle> 


     </TreeView> 

я взял какую-то часть кода из this Sheridan answer, но это не работает для меня. Если я изменил свойство IsSelected на IsExpanded - он работает. У меня getter \ setter: значение изменено.

Может быть, это может помочь: я выбираю и расширяю все подносы по коду.

Итак, как сделать элемент IsSelected установленным новым цветом? Спасибо!

P.S. и это strange- но геттерного \ сеттер PropertyChanged является нулевой ...

private bool _isSelected;  
    public bool IsSelected 
    { 
     get 
     { 
      return _isSelected; 
     } 
     set 
     { 
      _isSelected = value; 
      OnPropertyChanged("IsSelected"); //PropertyChanged is null. 
     } 

    } 

ответ

1
 <TreeView x:Name="tvVisual" BorderBrush="{DynamicResource scbTreeCategories}" BorderThickness="5" 
        VirtualizingStackPanel.IsVirtualizing="False" 
        ItemsSource="{Binding Childrens,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
        ScrollViewer.CanContentScroll="False" 
        TreeViewItem.Selected="tvVisual_Selected"                 
        > 

       <TreeView.ItemTemplate> 

       <HierarchicalDataTemplate ItemsSource="{Binding Childs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"> 
        <TextBlock Text="{Binding Path=Name}"> 
         <TextBlock.Style> 
          <Style TargetType="TextBlock"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding IsSelected}" Value="True"> 
             <!--<Setter Property="Background" Value="#4682B4" />--> 
             <Setter Property="FontWeight" Value="Bold"/> 
             <Setter Property="Background" Value="Blue"/> 
             <Setter Property="Foreground" Value="White"/> 

            </DataTrigger> 
            <DataTrigger Binding="{Binding IsTargetItem}" Value="True"> 
             <Setter Property="FontWeight" Value="Bold"/> 
             <Setter Property="Background" Value="Blue"/> 
             <Setter Property="Foreground" Value="White"/> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </TextBlock.Style> 
        </TextBlock> 
       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 

      <TreeView.ItemContainerStyle> 
        <Style TargetType="{x:Type TreeViewItem}" > 
         <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> 
         <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
        </Style> 
       </TreeView.ItemContainerStyle> 


     </TreeView> 
+0

Это не работает для меня –