4

SnapView と Portrait ビューの両方に使用している ListView があります。ただし、両方のビューでアイテム テンプレートのいくつかのアイテムを変更したいと考えています。VisualStateManager はこれを行うのに理想的な場所のようですが、私にはわかりません。

ここに私の ListView XAML があります:

<ListView x:Name="SampleListView" ItemsSource="{Binding Samples}" Visibility="Collapsed">
    <ListView.ItemTemplate>
        <DataTemplate>
            <local:SampleBlock SampleText="{Binding ElementName=pageRoot, Path=DataContext.SampleText, Mode=TwoWay}"
                Height="70" Width="Auto" Margin="5" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

ページの VisualStateManager を使用して、SampleBlock コントロールのHeightMarginを変更したいと考えています。これは、ListView を表示および非表示にするビジュアル ステート マネージャーです。

<VisualState x:Name="FullScreenPortrait">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleListView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleGridView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleListView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="SampleGridView" Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

ページの VisualStateManager から項目テンプレートにアクセスする方法はありますか、それとも別の角度から攻撃する必要がありますか?

4

1 に答える 1

9

DataTemplate のプロパティを変更することはできませんが、ListView の実際の ItemTemplate をスナップ ビューに使用する特定のテンプレートに変更することはできます。

<VisualState x:Name="Snapped">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemListView" Storyboard.TargetProperty="ItemTemplate">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SnappedListViewItemTemplate}"/>
        </ObjectAnimationUsingKeyFrames>                        
    </Storyboard>
</VisualState>
于 2012-08-23T13:39:58.473 に答える