Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > "Активный" элемент в ListBox


Автор: RastaDja 25.8.2011, 16:19
   Доброго времени суток уважаемые!
   Такая задача:
      Есть у меня список (ListBox) который биндится к определенному классу. У этого класса есть свойство IsActivity (что значит, что этот класс активный).
   Как мне закрасить активный элемент списка в красный (например) цвет используя стили?
   Спасибо.

Автор: hexzo 25.8.2011, 16:57
Что то типа такого, если я правильно понял вопрос. В качестве isActivity выступает двоечка.
Код

<ListView Height="209" HorizontalAlignment="Left" Margin="62,44,0,0" Name="listView1" VerticalAlignment="Top" Width="102">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Text}" Value="2">
                            <Setter Property="Background" Value="Red"></Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>                      

            <TextBlock>1</TextBlock>
            <TextBlock>2</TextBlock>
            <TextBlock>3</TextBlock>
</ListView>

Автор: RastaDja 26.8.2011, 08:47
hexzo, спасибо, но как это перенести в стили?
То-есть, как мне изменить этот код, чтоб учитывать еще и биндинг?
Код

<Style x:Key="SimpleListBoxItem" TargetType="ListBoxItem">            
            <Setter Property="Foreground" Value="#000"/>
            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border
                           Name="Border"
                           Padding="2"
                           SnapsToDevicePixels="true">
                           <ContentPresenter />
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="False">
                                <Setter Property="Foreground" Value="#888"></Setter>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter Property="Foreground" Value="#000"/>
                                <Setter TargetName="Border" Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush StartPoint="1,0" EndPoint="0,0">
                                            <GradientBrush.GradientStops>
                                                <GradientStopCollection>
                                                    <GradientStop Color="#FFC4BDBD" Offset="0.0"/>
                                                    <GradientStop Color="#FFF2EFEF" Offset="0.3"/>
                                                    <GradientStop Color="#FFC4BDBD" Offset="1.0"/>
                                                </GradientStopCollection>
                                            </GradientBrush.GradientStops>
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="IsSelected" Value="False"/>
                                    <Condition Property="IsMouseOver" Value="True"/>
                                </MultiTrigger.Conditions>
                                <Setter Property="Foreground" Value="#555"></Setter>
                                <Setter TargetName="Border" Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush StartPoint="1,0" EndPoint="0,0">
                                            <GradientBrush.GradientStops>
                                                <GradientStopCollection>
                                                    <GradientStop Color="#FFE8E2E2" Offset="0.0" />
                                                    <GradientStop Color="White" Offset="0.2" />
                                                    <GradientStop Color="#FFE8E2E2" Offset="1.0" />
                                                </GradientStopCollection>
                                            </GradientBrush.GradientStops>
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </MultiTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

пробовал использовать ваш код в своем стиле, но ничего не вышло у меня.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)