لماذا لا يعمل doubleanimation على mainwindow.load؟ فبف.نت


أهلاً.
في برنامجي المصمم، تتغير الصفحات بتأثير التلاشي الذي يغير خاصية OpacityProperty في DoubleAnimation.

لكنني فوجئت لماذا لا يعمل 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 الخاصة بالنافذة حتى الآن.

حاول نقل رمز التلاشي هذا إلى حدث النافذة المحملة.

الحل 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

コメント

タイトルとURLをコピーしました