したがって、NotifyPropertyChangedを実装するいくつかのプロパティ(Name、Sizeなど)を持つカスタムオブジェクトのコレクションにバインドされたビューモデルがあるため、LongListSelectorはそれに応じて更新されます。
次に、LongListSelectorにいくつかのアニメーションを追加します。これにより、アイテムが追加されるとフェードインし、アイテムが削除されるとフェードアウトします。Grid.Loadedが起動したときに追加アニメーションを機能させることができたので、Grid.Unloadで逆アニメーション(フェードアウト)を呼び出すこともできると思いましたが、成功しませんでした。
私が見たのは、Grid.Unload(何らかの理由で起動しない)、Grid.LayoutUpdated(何度も起動する)、Triggers PropertyChangedTrigger(これを「削除」などのプロパティにバインドすると、アニメーション化できると思いました)そのプロパティがtrueに設定されているが、これを実装する方法に固執している場合。ただし、これはこの段階での私の最善のオプションのようです)、Styles EventTrigger(ただし、探していたイベントはありませんでした。新しいイベントを作成できるかもしれません。 LongListSelectorの場合ですが、それを継承するコントロールを作成するには、より多くの時間が必要になります)。
だから私は他にどのようなオプションが利用できるのだろうかと思っていますか?または、誰かが同じような状況にあり、知識を共有できる場合は!
編集-これはWindowsPhoneアプリケーション用であるため、一部のクラスは利用できません。
編集2-明確にするために、グリッド用のストーリーボードを作成して不透明度を下げることができますが、私のコードのように、メソッドは、そのストーリーボードを開始するためのグリッドを見つける方法がないアイテムの削除を処理します。私も以前はこれに固執していましたが、別の問題のために実装を変更することにしました。現状では、LongListSelectorのItemTemplateはPhoneApplicationResource(Resourceと同等)DataTemplateにバインドされており、このテンプレート内でグリッドを見つけることができませんでした。
編集3-DataTriggersを試してみたところ、順調に進んでいるようです。
<Custom:Interaction.Triggers>
<ic:DataTrigger Binding="{Binding IsDeleted}" Value="true">
<eim:ControlStoryboardAction Storyboard="{StaticResource fade}"/>
</ic:DataTrigger>
</Custom:Interaction.Triggers>
IsDeletedは、その値を確認するために別のバインディングでテストしたため機能していますが、上記のコードを実行すると、debug.break()エラーが発生します。上記のコードを実行した場合にのみ表示されます。参考までに私のストーリーボードは次のとおりです。
<Storyboard x:Name="fade">
<DoubleAnimation Storyboard.TargetName="grid" Storyboard.TargetProperty="Height" From="95" To="0" Duration="0:0:1" SpeedRatio="1" />
<DoubleAnimation Storyboard.TargetName="grid" Storyboard.TargetProperty="Opacity" From="1.0" To="0" Duration="0:0:1" SpeedRatio="1" />
</Storyboard>
注:どちらもPhoneApplicationPage.ResourcesのグリッドのDataTemplate内にあり、ストーリーボードのみが次のようにGrid.Resourcesにあります。
<PhoneApplicationPage.Resources>
<DataTemplate>
<Grid>
//DataTrigger here
<Grid.Resources>
// Storyboard here
</Grid.Resources>
</Grid>
</DataTemplate>
</PhoneApplicationPage.Resources>
ありがとう。