Почему ничего не определено в состояниях ItemContainerStyle в списке WPF? - PullRequest
0 голосов
/ 15 июля 2011

Когда я редактирую шаблон и захожу в шаблон ItemContainerStyle, состояния определяются как Unselected, Selected, MouseOver и т. Д. Но в этих состояниях фактически ничего не делается. Это нормальное поведение? Я работал с Silverlight Listbox. В нем ItemContainerStyle определяет все состояния, и многие свойства изменены. WPF listbox немного сбивает с толку. Смотрите, это xaml, когда я редактирую ItemContainerStyle:

<Style x:Key="ListBoxItemContainerStyle" TargetType="{x:Type ListBoxItem}">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
            <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
            <Setter Property="Padding" Value="2,0,0,0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true" >
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Normal"/>
                                    <VisualState x:Name="MouseOver"/>
                                    <VisualState x:Name="Disabled"/>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="SelectionStates">
                                    <VisualState x:Name="Unselected"/>
                                    <VisualState x:Name="Selected"/>
                                    <VisualState x:Name="SelectedUnfocused"/>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>

                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

Здесь указан только ContentPresenter. Я хочу изменить градиент, когда наведено указатель мыши. Я также хочу масштабировать размер предмета. Как мне это сделать?

Заранее спасибо:)

1 Ответ

0 голосов
/ 31 октября 2011

При использовании состояний в WPF вы должны определить раскадровку внутри требуемого состояния и внести изменения в качестве анимации.Если вы хотите изменить некоторые свойства контейнера элемента, может быть проще использовать Trigger для свойства IsMouseOver в стиле Borders, например.

...