2

グリッドビュー アイテム テンプレートで VisualStates を使用することは可能ですか? ItemContainerStyle ControlTemplate を介して VisualStates を設定すれば VisualStates を使用できますが、それでは 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>
4

1 に答える 1

0

あなたができないことは確かです。ItemTemplate ベース コントロールは、マウス/フォーカス イベントのいずれも処理しません。既定のコントロールのテンプレートのコピーを作成でき、視覚状態が定義されていない場合、新しいものを定義して自動的に呼び出すことはできません。この場合、項目テンプレートはマウス/フォーカス/その他の情報を認識しません。これらすべてを確認する時間はありませんが、99% 確実です。

于 2012-09-10T18:33:05.477 に答える