Фон выбранной строки не изменяется в элементе управления ListView. - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть следующий ListView с ListView.ItemTemplate:

<ListView.ItemTemplate>
    <DataTemplate>
        <StackPanelName="stackPanel" Orientation="Horizontal">
            <TextBoxName="textBoxOrg"
                Background="Transparent" BorderThickness="0" TextWrapping="Wrap" Text="{BindingOrgText}"
                IsReadOnly="True"/>
            <TextBoxName="textBoxNew"
                Background="Transparent" BorderThickness="0" TextWrapping="Wrap" Text="{BindingNewText}"
                AcceptsReturn="True"/>
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>

И следующий ListViewItemStyle

<Style TargetType="ListViewItem">
    <Setter Property="SnapsToDevicePixels" Value="True" />
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="LightGoldenrodYellow" />
            </Trigger>
        </Style.Triggers>
</Style>

Я хочу изменить синий цвет фона по умолчанию для выбранного элемента, но при использовании вышеуказанного кода он не изменился на «LightGoldenrodYellow» при выборе элемента.

Как мне исправить код, чтобы он работал правильно?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2010

У д-ра WPF есть отличная статья о ItemsControls, которая называется ( ItemsControl: от A до Z ), и читайте I и L

0 голосов
/ 27 сентября 2010

Я, наконец, работаю так:

<Style x:Key="myListboxStyle">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#CCFFFFFF" />
    </Style.Resources>
</Style>

И все работает отлично.Спасибо всем вам.

0 голосов
/ 27 сентября 2010

Вам необходимо настроить ControlTemplate объекта ListViewItem.В противном случае он переопределяет (не использует) заданный вами фоновый триггер.Вот шаблон по умолчанию для настройки (я использую полезный небольшой инструмент, называемый stylesnooper, чтобы получить шаблоны http://wpfwonderland.wordpress.com/2007/01/02/wpf-tools-stylesnooper/):

            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="Bd" SnapsToDevicePixels="True">
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                    </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="Selector.IsSelected">
                        <Setter Property="Panel.Background" TargetName="Bd">
                            <Setter.Value>
                                <DynamicResource ResourceKey="{x:Static SystemColors.HighlightBrushKey}" />
                                </Setter.Value>
                            </Setter>
                        <Setter Property="TextElement.Foreground">
                            <Setter.Value>
                                <DynamicResource ResourceKey="{x:Static SystemColors.HighlightTextBrushKey}" />
                                </Setter.Value>
                            </Setter>
                        <Trigger.Value>
                            <s:Boolean>
                                True</s:Boolean>
                            </Trigger.Value>
                        </Trigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="Selector.IsSelected">
                                <Condition.Value>
                                    <s:Boolean>
                                        True</s:Boolean>
                                    </Condition.Value>
                                </Condition>
                            <Condition Property="Selector.IsSelectionActive">
                                <Condition.Value>
                                    <s:Boolean>
                                        False</s:Boolean>
                                    </Condition.Value>
                                </Condition>
                            </MultiTrigger.Conditions>
                        <Setter Property="Panel.Background" TargetName="Bd">
                            <Setter.Value>
                                <DynamicResource ResourceKey="{x:Static SystemColors.ControlBrushKey}" />
                                </Setter.Value>
                            </Setter>
                        <Setter Property="TextElement.Foreground">
                            <Setter.Value>
                                <DynamicResource ResourceKey="{x:Static SystemColors.ControlTextBrushKey}" />
                                </Setter.Value>
                            </Setter>
                        </MultiTrigger>
                    <Trigger Property="UIElement.IsEnabled">
                        <Setter Property="TextElement.Foreground">
                            <Setter.Value>
                                <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" />
                                </Setter.Value>
                            </Setter>
                        <Trigger.Value>
                            <s:Boolean>
                                False</s:Boolean>
                            </Trigger.Value>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...