アプリ用のカスタム ハンバーガー メニューを作成しようとしています。レイアウトをすべてセットアップしましたが、何らかの理由でDoubleAnimation
期待どおりに動作しません。Windows 10 で Cortana のハンバーガー メニューに似たものを実現しようとしています。コードでStoryboard
andを作成DoubleAnimation
しています (アニメーションが XAML で作成されていても、同じ問題が発生します)。ここに私が持っているものがあります:
menuButton.Click += (s, e) => {
if (menuIsOpen) {
Animate(
menuPanel,
"Width",
ActualWidth, //Page.ActualWidth
50,
0.1,
new Duration(new TimeSpan(TimeSpan.TicksPerSecond)));
}
else {
Animate(
menuPanel,
"Width",
50,
ActualWidth, //Page.ActualWidth
0.1,
new Duration(new TimeSpan(TimeSpan.TicksPerSecond)));
}
menuIsOpen = !menuIsOpen;
};
これは の署名ですAnimate()
:
private void Animate(DependencyObject item, string property, double from, double to, double? by, Duration duration) {
var storyboard = new Storyboard();
var animation = new DoubleAnimation();
animation.From = from;
animation.To = to;
animation.Duration = duration;
animation.EasingFunction = new SineEase() { EasingMode = EasingMode.EaseInOut };
animation.By = by;
Storyboard.SetTarget(animation, item);
Storyboard.SetTargetProperty(animation, property);
storyboard.Children.Add(animation);
storyboard.Begin();
}
が実際に実行されているDebug.WriteLine()
かどうかを確認するために少し使用しました。Storyboard
のmenuPanel
幅はまったく変わりません。私は他のいくつかのプロジェクトで同様のアプローチを使用しましたが、そこではうまく機能します。
編集:もう少し詳細を追加すると思いました。
私のアプリは Windows 10 をターゲットにしており、s とsmenuPanel
を使用しない場合は自由に幅を変更できます。Storyboard
DoubleAnimation