項目が選択されているかどうかに基づいて、WinRT アプリで ListViewItem の表示を変更しようとしています。WPF ではスタイル トリガーを使用していましたが、これは WinRT では使用できません。しばらく Web を検索した後、Visual State Manager を使用する必要があると思います。私が理解しているように、ListView には、関心のある状態を保持する視覚状態グループ「SelectionStates」があります。そのため、ListView に適用する次の ItemContainerStyle を思いつきました。
<Style x:Key="itemContainerStyle" TargetType="SelectorItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="SelectorItem">
<Grid>
<TextBlock x:Name="textBlock" Text="{Binding}" Visibility="Visible" />
<TextBox x:Name="textBox" Text="{Binding Path=Name, Mode=TwoWay}" Visibility="Collapsed" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected" />
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="textBox" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="textBlock" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
通常の項目は期待どおりに表示されますが (私のスタイルが適用されていると思います)、選択項目はまったく機能しません。なんで?状態は自動的にトリガーされると思いますね。では、どうすれば修正できますか?
注: グリッド ビューでも同じスタイルを使用したいので、ターゲット タイプとして "SelectorItem" を使用します。問題ありますか?「ListViewItem」に変更しても問題は解決しませんでした...
前もって感謝します、クリストフ