下面是我在WPF中创建到窗口之间的淡入/淡出过渡的尝试,但是我不明白TransitionStoryboard.Begin()
方法需要什么作为参数。通过为该方法提供传入的窗口之一的实例,我已经能够淡入/淡出一个窗口,但不知道如何在两个窗口中均通过它。 MS文档讨论了类型为FrameworkContentElement
或设置为TargetName
的“包含对象”,但是...我被卡住了!
感谢您提供的任何帮助。
Imports System.Runtime.CompilerServices
Imports System.Windows.Media.Animation
<Assembly: InternalsVisibleTo("ApplicationStartingTests")>
Friend Module WindowFadeTransition
Friend Sub Transition(from As Window,
[to] As Window)
ConfigureFromAnimation(from)
ConfigureToAnimation([to])
PlayTransition()
End Sub
Private Sub ConfigureFromAnimation(from As DependencyObject)
Const invisible As Double = 0
Dim fadeOutAnimation As New DoubleAnimation
With fadeOutAnimation
.To = invisible
.Duration = Duration
End With
TransitionStoryboard.Children.Add(fadeOutAnimation)
Storyboard.SetTarget(from,
fadeOutAnimation)
Storyboard.SetTargetProperty(fadeOutAnimation,
New PropertyPath(UIElement.OpacityProperty))
End Sub
Private Sub ConfigureToAnimation([to] As DependencyObject)
Const visible As Double = 1
Dim fadeInAnimation As New DoubleAnimation
With fadeInAnimation
.To = visible
.Duration = Duration
End With
TransitionStoryboard.Children.Add(fadeInAnimation)
Storyboard.SetTarget([to],
fadeInAnimation)
Storyboard.SetTargetProperty(fadeInAnimation,
New PropertyPath(UIElement.OpacityProperty))
End Sub
Private Sub PlayTransition()
TransitionStoryboard.Begin() '<---- What goes in here?'
End Sub
Private ReadOnly Property Duration As New Duration(TimeSpan.FromSeconds(0.7))
Private ReadOnly Property TransitionStoryboard As New Storyboard
End Module