是否可以在gridview itemtemplate中使用VisualStates?我可以使用VisualStates,如果我通过ItemContainerStyle ControlTemplate设置它们,但只允许我访问同一级别的项目,包括ContentPresenter。我想要做的是更改内容演示者内部控件的背景颜色。这是一个似乎没有任何影响的简单示例。
<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 :(得分:0)
很确定你做不到。 ItemTemplate基本控件不处理任何鼠标/焦点事件AFAIK。如果您可以为默认控件创建模板的副本,并且它没有已定义的可视状态,则无法定义新的模板并自动调用它们。在这种情况下,项目模板不知道任何鼠标/焦点/任何信息。没有时间确认这一切,但99%确定。