我有一个从 Observable 集合中读取的列表框,并且是 ItemTemplate 的:
<DataTemplate x:Key="DataTemplate1">
<Grid x:Name="grid" Height="47.333" Width="577" Opacity="0.495">
<Image HorizontalAlignment="Left" Margin="10.668,8,0,8" Width="34" Source="{Binding ImageLocation}"/>
<TextBlock Margin="56,8,172.334,8" TextWrapping="Wrap" Text="{Binding ApplicationName}" FontSize="21.333"/>
<Grid x:Name="grid1" HorizontalAlignment="Right" Margin="0,10.003,-0.009,11.33" Width="26" Opacity="0" RenderTransformOrigin="0.5,0.5">
<Image HorizontalAlignment="Stretch" Margin="0" Source="image/downloads.png" Stretch="Fill" MouseDown="Image_MouseDown" />
</Grid>
</Grid>
</DataTemplate>
<ListBox x:Name="searchlist" Margin="8" ItemTemplate="{DynamicResource DataTemplate1}" ItemsSource="{Binding SearchResults}" SelectionChanged="searchlist_SelectionChanged" ItemContainerStyle="{DynamicResource ListBoxItemStyle1}" />
一般来说,我的问题是“什么是在这个列表框中的特定项目上做动画的最简单方法是什么?当它们被选中时?基本上,“grid1”内的图像将缓慢地将其不透明度设置为 1。
我更喜欢使用状态,但我不知道有什么方法可以将 blend 和 xaml 告诉“更改选定项目时,在 0.3 秒内将图像不透明度更改为 1”。事实上,我一直在使用 VisualStateManager 在 .cs 文件中执行此操作。
此外,还有另一个问题。更改选定的索引时,我们将获得CS文件并查看SelectedItem。SelectedItem 返回它绑定到的对象的实例(可观察集合内的对象),而不是 DataTemplate/ListItem 等的实例。那么我如何才能从这个列表中提取正确的图像呢?
使用 VisualStateManager 的状态动画如果只是正常的事情,我可以处理得很好,但是当涉及到生成的列表框的项目时,我迷路了。
谢谢