Задать вопрос

Как при помощи триггера в WPF изменить картинку в дочернем элементе ListBox?

Есть ListBox, внутри которого выводится список аудио. Каждый элемент имеет картинку. Как сделать так, чтобы когда элемент выбран, картинка менялась на другую? Пробовал триггером на свойство IsSelected реагировать, ошибка "Свойство недоступно". И как написать сам триггер, чтобы он менял свойство Source у картинки?

<ListBox x:Name="ListAudio"
                 Margin="10,122,81,10"
                 MouseDoubleClick="ListAudio_MouseDoubleClick">
            
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <DataTemplate.Triggers>
                        <Trigger Property="IsSelected"  Value="true"></Trigger>
                    </DataTemplate.Triggers>
                    <StackPanel Orientation="Horizontal">

                        <Image Width="22"
                               Height="22"
                               Margin="5"
                               Source="/Images/play.png" />

                        <StackPanel>
                            <TextBlock FontWeight="Bold" Text="{Binding Path=title}"></TextBlock>
                            <TextBlock Text="{Binding Path=duration}" />
                        </StackPanel>

                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
            
        </ListBox>
  • Вопрос задан
  • 2171 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Яндекс Практикум
    Продвинутая разработка на C# и .NET
    5 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unity + ИИ
    6 месяцев
    Далее
Решения вопроса 1
artem_b89
@artem_b89
Сетевой бездельник
Попробуйте так
<Image Width="22"
                               Height="22"
                               Margin="5"
                                >
                            <Image.Style>
                                <Style>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBoxItem}}" Value="true">
                                            <Setter Property="Image.Source" Value="../Images/play2.png"/>
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBoxItem}}" Value="false">
                                            <Setter Property="Image.Source" Value="../Images/play.png"/>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>                                
                            </Image.Style>
                        </Image>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы