[ad_1]
こんにちは。
私の設計したプログラムでは、DoubleAnimation の OpacityProperty を変更するフェード効果でページが変更されます。
しかし、なぜ DoubleAnimation が MainWindow.Loaded で動作しないのかに驚きました。
つまり、プログラムの開始時点では機能しません。
何かアイデアはありますか?
以下のコードをコピーしてボタンの下に貼り付けることを付け加えておきます。 うまくいきました。 しかし、プログラムを開始すると機能しません。
私が試したこと:
XML
Private Sub New() InitializeComponent() 'Fade in MainWindow page. Dim DAGrid = New DoubleAnimation With { .From = 0.0, .To = 1.0, .FillBehavior = FillBehavior.Stop, .BeginTime = TimeSpan.FromSeconds(0), .Duration = New Duration(TimeSpan.FromSeconds(3)) } Dim storyboard = New Storyboard() Storyboard.SetTarget(DAGrid, MainWindow) Storyboard.SetTargetProperty(DAGrid, New PropertyPath(OpacityProperty)) storyboard.Children.Add(DAGrid) storyboard.Begin() End Sub
解決策 1
Window クラスのコンストラクターでは、クラスのインスタンスを作成しただけで、ウィンドウ ハンドルやウィンドウ GDI オブジェクトさえもまだ作成していないため、これは機能しません。
そのフェード コードをウィンドウの Loaded イベントに移動してみてください。
解決策 2
解決しました!
VB
Sub New() InitializeComponent() TheMainWindow.Opacity = 0 End Sub Private Sub TheMainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles TheMainWindow.Loaded 'Fade in MainWindow page. Dim DATheMainWindow = New DoubleAnimation With { .From = 0.0, .To = 1.0, .FillBehavior = FillBehavior.Stop, .BeginTime = TimeSpan.FromSeconds(0), .Duration = New Duration(TimeSpan.FromSeconds(1)) } AddHandler DATheMainWindow.Completed, Sub(a, b) TheMainWindow.Opacity = 1 'TheMainWindow is the Name Property of MainWindow 'a and b is just a temporary variables and no need to declare. Dim storyboardTheMainWindow = New Storyboard() Storyboard.SetTarget(DATheMainWindow, TheMainWindow) Storyboard.SetTargetProperty(DATheMainWindow, New PropertyPath(OpacityProperty)) storyboardTheMainWindow.Children.Add(DATheMainWindow) storyboardTheMainWindow.Begin() End Sub
[ad_2]
コメント