我正在模仿 Groove Music 的行为,当鼠标悬停在专辑封面上时会显示阴影效果(在我的代码中,它是整个 DataTemplate)。但我的 VisualStateManager 似乎不起作用。有任何想法吗?我已经以编程方式实现了该功能,但我想使用 xaml 来进行练习。
- -更新 - -
将 Stackpanel 更改为 Grid 仍然无法正常工作。
<GridView
Grid.Row="1"
Margin="10"
IsItemClickEnabled="True"
ItemsSource="{x:Bind Albums}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:GridAlbumView">
<Grid
Width="180"
Height="240"
Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<controls:DropShadowPanel
x:Name="AlbumShadowPanel"
VerticalContentAlignment="Top"
BlurRadius="15"
OffsetX="4"
OffsetY="4"
ShadowOpacity="0"
Color="Black">
<Image Source="{x:Bind Cover}" />
</controls:DropShadowPanel>
<TextBlock
Margin="0,5,0,0"
Grid.Row="1"
FontWeight="SemiBold"
MaxLines="2"
Text="{x:Bind Name}"
TextAlignment="Left"
TextWrapping="Wrap"
Visibility="{x:Bind Name, Converter={StaticResource AlbumNameVisibilityConverter}}" />
<TextBlock
Grid.Row="2"
FontSize="12"
Foreground="Gray"
Text="{x:Bind Artist}"
TextAlignment="Left" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="PointerOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="AlbumShadowPanel" Storyboard.TargetProperty="ShadowOpacity">
<DiscreteObjectKeyFrame KeyTime="0" Value="1" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>