डबलएनीमेशन mainwindow.load पर काम क्यों नहीं करता? डब्ल्यूपीएफ वीबी.नेट


नमस्ते।
मेरे डिज़ाइन किए गए प्रोग्राम में, पृष्ठ फीका प्रभाव से बदलते हैं जो डबलएनीमेशन में OpacityProperty को बदल देता है।

लेकिन मुझे आश्चर्य हुआ कि DoubleAnimation MainWindow.Loaded पर काम क्यों नहीं करता?
मेरा मतलब है कि कार्यक्रम की शुरुआत में, यह काम नहीं करता है।
कृपया कोई विचार?

मुझे यह जोड़ना चाहिए कि मैं नीचे दिए गए कोड को एक बटन के नीचे कॉपी/पेस्ट करता हूं। इसने ठीक काम किया. लेकिन प्रोग्राम शुरू होने पर काम नहीं करता।

मैंने क्या प्रयास किया है:

एक्सएमएल
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

यह काम नहीं करता है क्योंकि विंडो क्लास के कंस्ट्रक्टर में, आपने केवल क्लास का एक उदाहरण बनाया है, आपने अभी तक विंडो हैंडल या यहां तक ​​कि विंडो GDI ऑब्जेक्ट नहीं बनाया है।

उस फ़ेड कोड को विंडो लोडेड इवेंट में ले जाने का प्रयास करें।

समाधान 2

हल किया!

वी.बी
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をコピーしました