4

我正在尝试向我的 Windows 8 应用程序添加鼠标悬停效果。具体来说,我正在尝试将其添加到绑定到 GridView 的 DataTemplates 中。但是,目前,什么都没有发生,我尝试遵循 Microsoft 教程,但其中大多数要么已过时,要么适用于不同版本的 XAML。

我的代码如下所示:

<DataTemplate x:Key="GameTileTemplate">
    <Grid x:Name="grid" Width="173" Height="173" RenderTransformOrigin="0.5,0.5" >
        <Grid.Clip>
            <RectangleGeometry Rect="0,0,173,173"/>
        </Grid.Clip>
        <Image Grid.RowSpan="3" Stretch="UniformToFill"/>
        <Grid x:Name="DataPanel" Margin="-173,0,0,0" Grid.RowSpan="3" RenderTransformOrigin="0.5,0.5" Width="346" HorizontalAlignment="Left" VerticalAlignment="Top" Height="173">
            <!--There is more here-->
        </Grid>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStateGroup">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="PointerEntered">
                    <Storyboard>
                        <DoubleAnimation From="1" To="0" Duration="00:00:02" 
                             Storyboard.TargetName="DataPanel" 
                             Storyboard.TargetProperty="Opacity">
                        </DoubleAnimation>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
    </Grid>
</DataTemplate>

我的 DataPanel 的不透明度没有改变。我在某处需要其他代码吗?Microsoft 教程是针对 ControlTemplate 的,由于我的模板是 DataTemplate,这是否会导致错误?

4

2 回答 2

4

您在问题中提供的 Xaml 不会自行工作。仅仅定义视觉状态是不够的。您还需要某种代码来调用VisualStateManager.GoToState

在您的特定情况下,解决方案不是添加视觉状态DataTemplate,而是为GridViewItem创建自定义模板。一般GridViewItem负责用常用的指针、选择、拖放状态来装饰 GridView 内部的元素。

于 2012-10-15T21:41:02.100 回答
4

添加 UserControl 应答器它可以工作,(不知道为什么)

 <DataTemplate x:Key="GameTileTemplate">
<UserControl>
<Grid x:Name="grid" Width="173" Height="173" RenderTransformOrigin="0.5,0.5" >
        <Grid.Clip>
....

...
 </VisualStateManager.VisualStateGroups>
    </Grid>
</UserControl>
</DataTemplate>
于 2015-09-27T09:18:40.987 回答