У меня есть список в стиле. Элементы Listbox меняют цвет при зависании и при выборе. Наведите указатель мыши и выберите режим работы. Но когда вы выбираете элемент, а затем вынимаете мышь и возвращаетесь, чтобы навести курсор на него, он возвращает его обратно в режим наведения/невыделения, даже если он все еще выбран. Как я могу сохранить listboxitem в «выбранном» визуальном состоянии?Пользовательский стиль списка - как я могу сохранить стиль для выбранного элемента?
<Style x:Name="myListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="myBorder" CornerRadius="5" BorderThickness="3" Background="#FF292121" Margin="0">
<Grid HorizontalAlignment="Stretch">
<ContentPresenter Content="{TemplateBinding Content}" Margin="5,0,5,0" />
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="myBorder" Storyboard.TargetProperty="(Background).(SolidBrush.Color)" Duration="00:00:00.2" To="#FF949290" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled"/>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected" />
<VisualState x:Name="Selected">
<Storyboard>
<ColorAnimation Storyboard.TargetName="myBorder" Storyboard.TargetProperty="(Background).(SolidBrush.Color)" Duration="00:00:00.2" To="#FF949290" />
</Storyboard>
</VisualState>
<VisualState x:Name="SelectedUnfocused"/>
</VisualStateGroup>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="myListBoxStyle" TargetType="ListBox">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="ItemContainerStyle" Value="{StaticResource myListBoxItemStyle}"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<Grid Margin="0">
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<ListBox Name="theControl" Style="{StaticResource myListBoxStyle}" />
Спасибо. Должен был подумать об этом. Для всех, кто сталкивается с подобной проблемой, я добавил еще одну границу внутри первой с той же формой и анимированную от прозрачного до цвета, когда она выбрана. Теперь отлично. – Adam
Действительно классный раствор! Благодаря.. –