wpf - 列表框在选择时更改图像
问题描述
我有一个列表框,其中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 被选中。
解决方案
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>
推荐阅读
- laravel - http-tests 如何在打开表单的情况下对 ajax 事件进行测试?
- keras - 有人可以帮助解释 keras.backend.learning_phase_scope(1) 的使用吗?
- python - 如何在 Visual Studio 调试命令中使用环境变量
- heroku - 打开应用程序时出现应用程序错误
- algorithm - 在不排序的情况下查找数组中元素的排名
- shell - 使用shell的sql查询,尝试以下,它不工作
- sql - 从同一个表sql中获取不同列的最新和最早值
- sonarqube - 如果我在同一个项目中有多个目标文件夹的子目录,如何设置声纳属性
- php - 我如何使用 CURL ( Laravel ) 传递 SSL 证书
- react-native - 使用 JSC/Hermes/V8 增加调用堆栈大小 React Native