2010-02-10 13 views
5

का उपयोग कर किसी भी नियंत्रण को फीका करें मैं अपने डब्ल्यूपीएफ प्रोजेक्ट में नियंत्रण (बटन, टेक्स्टबॉक्स, पैनल इत्यादि) की अस्पष्टता को टॉगल करना चाहता हूं और यह देखना चाहता हूं कि मैंने इसे सही तरीके से किया है या नहीं।एक WPF एनीमेशन

मेरा प्रश्न है: क्या यह कार्यक्षमता का प्रकार है जिसे आप आमतौर पर एक्सएएमएल में लिखते हैं या क्या आप नीचे दिए गए कोड का उपयोग फीड इन/फीड आउट प्राप्त करने के लिए करेंगे?

internal static class AnimationExtensions 
{ 
    internal enum TransitionSpeed 
    { 
     Instant = 0, 
     Fast = 100, 
     Normal = 200, 
     Slow = 500 
    } 

    /// <summary> 
    /// Toggles the opacity of a control. 
    /// </summary> 
    /// <param name="control">The control.</param> 
    internal static void ToggleControlFade(this Control control) 
    { 
     control.ToggleControlFade(TransitionSpeed.Normal); 
    } 

    /// <summary> 
    /// Toggles the opacity of a control. 
    /// </summary> 
    /// <param name="control">The control.</param> 
    /// <param name="speed">The speed.</param> 
    internal static void ToggleControlFade(this Control control, TransitionSpeed speed) 
    { 
     Storyboard storyboard = new Storyboard(); 
     TimeSpan duration = new TimeSpan(0, 0, 0, 0, (int)speed); // 

     DoubleAnimation animation = new DoubleAnimation { From = 1.0, To = 0.0, Duration = new Duration(duration) }; 
     if (control.Opacity == 0.0) 
     { 
      animation = new DoubleAnimation { From = 0.0, To = 1.0, Duration = new Duration(duration) }; 
     } 

     Storyboard.SetTargetName(animation, control.Name); 
     Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity", 0)); 
     storyboard.Children.Add(animation); 

     storyboard.Begin(control); 
    } 
} 

जैसा कि आप शायद बता सकते हैं कि मैं WPF के लिए बहुत नया हूं।

धन्यवाद

उत्तर

1

मैं स्थानों पर जहां मैं एक एनीमेशन या जहां एनीमेशन जटिल पर निर्भर है के बाद कोई कार्रवाई करने की जरूरत है में मिल जाते हैं चलाता है कि कोड-पीछे, सबसे अच्छी जगह है अन्यथा XAML एक अच्छा है एनीमेशन डालने के लिए जगह। (मैं आमतौर पर संक्रमण या सरल 'ऑनक्लिक' घटनाओं की तरह चीजों के लिए ऐसा करता हूं।

संबंधित मुद्दे