gpt4 book ai didi

c# - 如何使用 WPF 中的 Frame 控件制作过渡效果?

转载 作者:可可西里 更新时间:2023-11-01 03:06:59 27 4
gpt4 key购买 nike

我认为这很容易,但我想不是。

我的框架控件中加载了 2 个页面。我希望能够拥有从一页到下一页的漂亮幻灯片效果或只是简单的淡入效果。

似乎无法在互联网上的任何地方找到这个。

更新 1公认的答案很好,但我在这里找到了更好的答案。 http://www.japf.fr/2008/07/8/comment-page-1/

更新 2如果您能相信,我找到了一个更好的解决方案。
http://fluidkit.codeplex.com/

最佳答案

此处讨论了类似的问题:Transition Fade Animation When Navigating To Page使用此处描述的技术,您可以在每次浏览新页面时滑动/移动框架控件。像这样:

xaml:

...
<Frame Name = "frame" Navigating="frame_Navigating">
...

代码:

...
private bool _allowDirectNavigation = false;
private NavigatingCancelEventArgs _navArgs = null;
private Duration _duration = new Duration(TimeSpan.FromSeconds(1));
private double _oldHeight = 0;

private void frame_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (Content!=null && !_allowDirectNavigation)
{
e.Cancel = true;

_navArgs = e;
_oldHeight = frame.ActualHeight;

DoubleAnimation animation0 = new DoubleAnimation();
animation0.From = frame.ActualHeight;
animation0.To = 0;
animation0.Duration = _duration;
animation0.Completed += SlideCompleted;
frame.BeginAnimation(HeightProperty, animation0);
}
_allowDirectNavigation = false;
}

private void SlideCompleted(object sender, EventArgs e)
{
_allowDirectNavigation = true;
switch (_navArgs.NavigationMode)
{
case NavigationMode.New:
if (_navArgs.Uri == null)
frame.Navigate(_navArgs.Content);
else
frame.Navigate(_navArgs.Uri);
break;
case NavigationMode.Back:
frame.GoBack();
break;
case NavigationMode.Forward:
frame.GoForward();
break;
case NavigationMode.Refresh:
frame.Refresh();
break;
}

Dispatcher.BeginInvoke(DispatcherPriority.Loaded,
(ThreadStart)delegate()
{
DoubleAnimation animation0 = new DoubleAnimation();
animation0.From = 0;
animation0.To = _oldHeight;
animation0.Duration = _duration;
frame.BeginAnimation(HeightProperty, animation0);
});
}
...

希望这对你有帮助,问候

关于c# - 如何使用 WPF 中的 Frame 控件制作过渡效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2135113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com