2012-09-10 48 views
2

是否可以在gridview項目模板中使用VisualState?如果通過ItemContainerStyle ControlTemplate設置它們,我可以使用VisualStates,但只允許我訪問同級別的項目幷包括ContentPresenter。我想要做的是更改內容展示器中控件的背景顏色。這是一個簡單的例子,似乎沒有任何效果。WinRT中的視覺狀態管理器GridView項目模板

<GridView x:Name="ItemsGrid" ItemContainerStyle="{StaticResource StyleWhereVisualStatesWork}"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapGrid Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
    <GridView.ItemTemplate> //This Is Where I Can't Get Visual States To Work 
     <DataTemplate> 
      <Grid x:Name="ContainerGrid"> 
       <VisualStateManager.VisualStateGroups> 
        <VisualStateGroup x:Name="CommonStates"> 
         <VisualState x:Name="Normal"/> 
         <VisualState x:Name="PointerOver"> 
          <Storyboard> 
           <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="TestBackgroundGrid"> 
            <DiscreteColorKeyFrame KeyTime="0" Value="{StaticResource SomeBrush}"/> 
           </ColorAnimationUsingKeyFrames> 
          </Storyboard> 
         </VisualState> 
        </VisualStateGroup> 
       </VisualStateManager.VisualStateGroups> 
       <Grid x:Name="TestBackgroundGrid" Height="60" Width=60" Background="{StaticResource SomeStandardColourBrush}"> 
       </Grid> 
      </Grid> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

回答

0

很確定你不能。 ItemTemplate基本控件不處理任何鼠標/焦點事件AFAIK。如果您可以爲默認控件創建模板的副本並且沒有定義的視覺狀態,則無法定義新模板並自動調用它們。在這種情況下,項目模板不知道任何鼠標/焦點/任何信息。沒有時間來確認這一切,但99%肯定。

+0

非常感謝Jeff,您一定是對的。我完全拋棄了我的ItemTemplate,並放置了我的ItemContainerStyle中的所有內容,這完全刪除了ContentPresenter。似乎按預期工作。我覺得我做錯了什麼其他什麼是具有項目模板,但如果它的工作.... – Oli

相關問題