(WPF) Как установить FocusVisualStyle для ListViewItem, когда ListView использует представления - PullRequest
0 голосов
/ 12 января 2019

У меня есть элемент управления ListView, который использует виды, подобные View = "{StaticResource SmallIcons}" *

Представление SmallIcons имеет следующую структуру:

<local:TileView x:Key="SmallIcons" SelectedBackground="{DynamicResource SlctnBrsh}"  CornerRadius="3" SelectedBorderBrush="LightGreen" ItemTemplate="{StaticResource SmallIconsDT}"/>

и SmallIconsDT представляет собой шаблон данных, подобный следующему:

<DataTemplate x:Key="SmallIconsDT" >
.........
</DataTemplate>

И у меня есть FocusVisualStyle следующим образом:

<Style x:Key="FocusVisualStyle1"  TargetType="{x:Type Control}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Control}">
                <Border BorderThickness="1" CornerRadius="1" BorderBrush="#FFFF9900" Background="#3F000000"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Как установить этот FocusVisualStyle1 для этих элементов ListView?

У меня нет опыта в этом деле. Я знаю, что FocusVisualStyle необходимо установить ControlTemplate. Но я использую DataTemplate.

1 Ответ

0 голосов
/ 12 января 2019

ListView - это ItemsControl, а ItemsControl использует элемент контейнера для каждого элемента (для ListView это будет ListViewItem).
Вы должны изменить FocusVisualStyle этого элемента контейнера.

Это легко сделать с помощью свойства ItemsControl.ItemContainerStyle

<ListView>
    <ListView.ItemContainerStyle>
        <Style>
            <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisualStyle1}" />
        </Style>
    </ListView.ItemContainerStyle>
    ...
</ListView>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...