Изменить источник изображения ListView при выборе - PullRequest
0 голосов
/ 23 сентября 2011

Ниже приведен образец того, что я после:

The paging indicator I would like to reproduce

Я решил реализовать это с помощью ListView (пробовал пользовательский элемент управления на основе Selector, но мне не удалось вывести что-либо удовлетворяющее).

Мой список отображается нормально, но я изо всех сил пытаюсь найти способ изменить источник изображения, когда элемент выбран. Вот мой код:

<UserControl.Resources>
    <DataTemplate x:Key="PagingIndicatorTemplate">
        <Image Width="20" Height="20">
            <Image.Style>
                <Style TargetType="Image">
                    <Setter Property="Source" Value="/MyProject;component/Resources/Images/ic_paging_button_normal.png" />
                <!-- I guess that's where I need to put my stuff to change the image ? ... -->
                </Style>
            </Image.Style>
        </Image>
    </DataTemplate>
</UserControl.Resources>

    <ListView Name="PagingIndicator" 
              Height="30" 
              ItemTemplate="{DynamicResource PagingIndicatorTemplate}" 
              ItemsSource="{Binding Path=News}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Style.Resources>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                </Style.Resources>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>

Ответы [ 2 ]

0 голосов
/ 26 сентября 2011

Я решил решить проблему так:

  • Создание двух разных шаблонов элементов (каждый со своими изображениями, стилями для наведения мыши, нажатия мыши, ...)
  • Измените свойство Template элемента ListViewItem с помощью триггера на его свойство IsSelected.
0 голосов
/ 23 сентября 2011
  1. Есть одна неправильная вещь ... вы используете ListView, но нацеливаетесь на ListBoxItem. Это должно быть ListViewItem.

  2. В стиле Image используйте DataTrigger, где проверьте привязку RelativeSource ListViewItem и Path=IsSelected (если это True) и измените Source изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...