そう...
20ピクセル離れた(仕様どおり)複数のフラグ画像を含むリストビューがあります。ユーザーがフラグを選択すると、フラグが選択されていることを示すために「2 倍大きく」する必要があります。だから私は次のことを試しました:
リストビューで SelectedUnfocused 状態を編集しました。最初に、フラグをズームするために scaletransform を作成しました。しかし問題は、ズーム倍率によってフラグが隣接するフラグと重なることです。そのため、サイズの変更に対応できるようにコンテナの幅を数ピクセル大きくするようにアニメーション化しましたが、これにより、選択の変更が迅速に行われるとギザギザになります。十分な速さでコンテナを再測定してレイアウトします。無効にして再レイアウトする sizechanged イベントを作成しましたが、成功しませんでした。アニメーション中にアイテムパネルを継続的に再測定するように強制するために何ができるかについてのアイデアはありますか?
動作動画は こちら
画像のサイズが大きくなり、隣の画像と重なることに注意してください。アニメーションが終了した後にのみ再レイアウトします
<VisualState x:Name="SelectedUnfocused">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedBorder"/>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectedCheckMark"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="contentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListViewItemSelectedForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="OuterContainer">
<EasingDoubleKeyFrame KeyTime="0" Value="108"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="150"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="OuterContainer">
<EasingDoubleKeyFrame KeyTime="0" Value="100"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="400"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
(伝統的な地下鉄のデザインなどではないことはわかっていますが、仕様に従っています)