2012-10-15 39 views
4

我正在嘗試爲我的Windows 8應用程序添加一個鼠標懸停效果。具體來說,我試圖將其添加到綁定到GridView的DataTemplates。然而,目前沒有任何事情發生,我試圖按照微軟的教程,但其中大多數是過時的或不同版本的XAML。將視覺狀態添加到Windows 8中的數據模板中

我的代碼如下所示:

<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上的不透明性不會改變。我是否需要其他代碼?微軟教程是爲ControlTemplate,這是由於我的模板是DataTemplate導致錯誤?

回答

4

你在你的問題中提供的Xaml不會自行工作。僅僅定義視覺狀態是不夠的。您還需要某種代碼才能撥打VisualStateManager.GoToState

在您的特定情況下,解決方案不是將視覺狀態添加到DataTemplate,而是爲GridViewItem創建自定義模板。通常,GridViewItem負責使用公共指針,選擇,拖放狀態來裝飾GridView中的元素。

+0

這幫助,謝謝。 – Runewake2

4

添加用戶控件應答器它的工作原理,(不知道爲什麼)

<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> 
+0

先生,你是個天才! – FloppyNotFound

+0

確認它在UWP中有效 – SuperJMN

相關問題