アプリ用のカスタム ハンバーガー メニューを作成しようとしています。レイアウトをすべてセットアップしましたが、何らかの理由でDoubleAnimation期待どおりに動作しません。Windows 10 で Cortana のハンバーガー メニューに似たものを実現しようとしています。コードでStoryboardandを作成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を使用しない場合は自由に幅を変更できます。StoryboardDoubleAnimation