मैं मेट्रो एक्सएएमएल ऐप में कुछ स्टोरीबोर्ड के साथ गड़बड़ कर रहा हूं। मुझे कोड में Storyboard
बनाना है। XAML इस तरह दिखता में मैं Storyboard.TargetProperty
CompositeTransform.Rotation
कोस्टोरीबोर्ड सेट नहीं कर सकता। लक्ष्यप्रदर्शन को कंपोजिट ट्रान्सफॉर्म। कोड से मेट्रो स्टाइल ऐप में रोटेशन
यह असंभव लगता है ...
मेरे स्टोरीबोर्ड निर्धारित करना चाहते हैं:
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)" Storyboard.TargetName="grid">
<EasingDoubleKeyFrame KeyTime="0" Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="60"/
</DoubleAnimationUsingKeyFrames>
</Storyboard>
मैं कुछ इसी तरह बनाना चाहते हैं।
महत्वपूर्ण: मैं को इस सटीक स्टोरीबोर्ड को फिर से बनाने की कोशिश नहीं कर रहा हूं। मैं एक कस्टम ContentControl
के कोड के अंदर हूं, इसलिए this
Control
है, और एनीमेशन को लक्षित करने के लिए कोई "ग्रिड" नहीं है। लक्ष्य स्वयं नियंत्रण है, जिसमें CompositeTransform
पहले सेट है। जैसे ही यह विधि शुरू मैं एक अपवाद कह रही है कि (CompositeTransform.Rotation) मिलता है हल नहीं किया जा सकता है हिट
var turnSB = new Storyboard();
var doubleAnim = new DoubleAnimationUsingKeyFrames();
doubleAnim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromMilliseconds(0), Value = currentAngle });
doubleAnim.KeyFrames.Add(new EasingDoubleKeyFrame() { KeyTime = TimeSpan.FromMilliseconds(500), Value = targetAngle });
turnSB.Children.Add(doubleAnim);
Storyboard.SetTarget(doubleAnim, this.RenderTransform);
Storyboard.SetTargetProperty(doubleAnim, "(CompositeTransform.Rotation)");
turnSB.Begin();
:
मेरे कोड अब तक इस तरह है। तो मुझे लगता है कि मुझे संपत्ति पथ बिल्कुल सही नहीं मिला। मैंने अलग-अलग बदलावों की कोशिश की है, लेकिन प्रॉपर्टीपैथ के अनुसार, यह सही होना चाहिए, है ना? : एस
इस एक न सुलझा हुआ समस्या है, तो मैं एक समाधान पर सुझाव के लिए खुले हूँ ...
संपादित करें:
मुझे लगता है कि मैं अब के लिए समस्या को हल कर दिया है। हालांकि मेरे पास कुछ दिलचस्प निष्कर्ष हैं ...
यदि मैं उपयोगकर्ता नियंत्रण करता हूं तो मैं व्यावहारिक रूप से कुछ भी कर सकता हूं। सबकुछ काम करता है, मैं स्टोरीबोर्ड सेट कर सकता हूं। लक्ष्यप्रदर्शन, और एनीमेशन सही ढंग से खेलता है।
हालांकि अगर मैं कस्टम नियंत्रण का उपयोग करता हूं, या किसी अन्य नियंत्रण से प्राप्त करता हूं (ContentControl कहें), तो मैं कुछ मामलों में कोड से स्टोरीबोर्ड शुरू नहीं कर सकता।
उदाहरण के लिए: यदि मैं रोटेशन (या उस मामले के लिए कोई परिवर्तन संपत्ति) को एनिमेट करने के लिए स्टोरीबोर्ड (एक्सएएमएल में परिभाषित) बनाता हूं और कोड से शुरू करने का प्रयास करता हूं, तो मुझे उपरोक्त अपवाद मिलता है। लेकिन अगर मैं एक साधारण संपत्ति को एनिमेट करता हूं, तो ओपेसिटी कहें, यह ठीक काम करता है।
(मैंने UserControl के साथ ऐसा किया, और यह काम किया।)
क्या कोई इसे समझा सकता है?
मैं एक ही समस्या हो रहा है, ग्रिड नियंत्रण से एक वर्ग इनहेरिट होने, स्टोरीबोर्ड बस जीता ': मैं इसे अपने स्वयं के नियंत्रण में काम कर रहे तो एक छोटा सा उदाहरण आप पेस्ट कॉपी कर सकते हैं (untested कोड) बनाया है टी शुरू करो। –
ध्यान देने योग्य एक बात यह है कि ग्रिड को नियंत्रण से विरासत में नहीं मिला है, इसलिए यह वास्तव में एक कस्टम नियंत्रण नहीं है जिसे आप बना रहे हैं। –
मैं ग्रिड का उपयोग नहीं कर रहा था, मैं ContentControl से विरासत में था। Xaml पिछली कोशिश से था, जहां मेरे पास UserControl था जिसमें इसमें ग्रिड था, और वह एनीमेशन का लक्ष्य था। लेकिन इस स्थिति के लिए, लक्ष्य ही नियंत्रण होना चाहिए। कौन सा - यदि आप ध्यान से पढ़ते हैं - मैंने 'महत्वपूर्ण' खंड में वर्णित किया है। – Tenshiko