Противоречивость раскраски элемента ListView - PullRequest
0 голосов
/ 08 февраля 2011

Элементы окрашены в зеленый цвет при наведении мыши и на клавиатуре.Как я могу вернуть окраску выбранных элементов в белый цвет, когда мышь находится над каким-то элементом?

это как будто я должен разделить механизмы.

A screenshot of the list

XAML:


    
    
    
       1  2  3  4  5   

1 Ответ

0 голосов
/ 08 февраля 2011

Я разделил сценарии, используя MultiTrigger.Ниже приведены сценарии:

  • Мышь над и не выделена (зеленый)
  • Выбрана и не выделена мышью (зеленый)
  • Мышь над и выбрана (Светло-зеленый)

XAML:

<Window.Resources>
    <SolidColorBrush x:Key="ListBorder"
                     Color="Green" />
    <SolidColorBrush x:Key="Brush_ListItem_MO"
                     Color="Green" />
    <SolidColorBrush x:Key="Brush_Tree_Item_Border"
                     Color="Green" />
    <SolidColorBrush x:Key="Brush_ListItem_MO_Selected"
                     Color="LightGreen" />
    <Style TargetType="ListBoxItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Grid x:Name="container">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition SharedSizeGroup="A"
                                              Width="Auto" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Border x:Name="Border"
                                Grid.ColumnSpan="3"
                                Height="35"
                                HorizontalAlignment="Stretch" />
                        <TextBlock Text="{TemplateBinding Content}" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected"
                                           Value="False" />
                                <Condition Property="IsMouseOver"
                                           Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="{DynamicResource ListBorder}" />
                            <Setter Property="Background"
                                    TargetName="Border"
                                    Value="{DynamicResource Brush_ListItem_MO}" />
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="{DynamicResource Brush_Tree_Item_Border}" />
                            <Setter Property="BorderThickness"
                                    TargetName="Border"
                                    Value="1" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected"
                                           Value="True" />
                                <Condition Property="IsMouseOver"
                                           Value="False" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="{DynamicResource ListBorder}" />
                            <Setter Property="Background"
                                    TargetName="Border"
                                    Value="{DynamicResource Brush_ListItem_MO}" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected"
                                           Value="True" />
                                <Condition Property="IsMouseOver"
                                           Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="{DynamicResource ListBorder}" />
                            <Setter Property="Background"
                                    TargetName="Border"
                                    Value="{DynamicResource Brush_ListItem_MO_Selected}" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected"
                                           Value="true" />
                                <Condition Property="Selector.IsSelectionActive"
                                           Value="false" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="Red" />
                            <Setter Property="Background"
                                    TargetName="Border"
                                    Value="Red" />
                            <Setter Property="BorderBrush"
                                    TargetName="Border"
                                    Value="{DynamicResource Brush_Tree_Item_Border}" />
                            <Setter Property="BorderThickness"
                                    TargetName="Border"
                                    Value="1" />
                        </MultiTrigger>
                        <Trigger Property="IsEnabled"
                                 Value="false">
                            <Setter Property="Foreground"
                                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
                        </Trigger>
                        <!--fgdfgdfgfdgfdgfg-->
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <ListBox>
        <ListBox.Items>
            <ListBoxItem>1</ListBoxItem>
            <ListBoxItem>2</ListBoxItem>
            <ListBoxItem>3</ListBoxItem>
            <ListBoxItem>4</ListBoxItem>
            <ListBoxItem>5</ListBoxItem>
        </ListBox.Items>
    </ListBox>
</Grid>
...