首页 > 解决方案 > 列表框在选择时更改图像

问题描述

我有一个列表框,其中SelectionMode设置为Single和项目模板如下所示:

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" Width="100" Margin="10" Cursor="Hand" >
                        <Image Source="/Assets/Images/folder_80closed.png" HorizontalAlignment="Center" />
                        <TextBox Text="{Binding Name}" BorderThickness="0" TextAlignment="Center" HorizontalAlignment="Center"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>

有没有办法根据是否选择项目来更改XAMLSource中图像属性的值?类似于下面的图片,其中 item4 被选中。

在此处输入图像描述

标签: wpfxaml

解决方案


IsSelected您可以在当前 ListBoxItem的属性上使用带有 DataTrigger 的图像样式:

<Image HorizontalAlignment="Center">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Source"
                    Value="/Assets/Images/folder_80closed.png"/>

            <Style.Triggers>
                <DataTrigger
                    Binding="{Binding IsSelected,
                             RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
                    Value="True">
                    <Setter Property="Source"
                            Value="/Assets/Images/some_other_image.png"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

推荐阅读