2011-05-18 6 views
6

मुझे पता है कि आइटम्स कंट्रोल के भीतर एनिमेटिंग आइटमों के संबंध में समान प्रश्न पूछे गए हैं, इसलिए यदि एक स्वीकार्य उत्तर पोस्ट किया गया है तो यह बहुत अच्छा होगा अगर मुझे इसकी ओर इशारा किया जा सके सही दिशा।ट्री व्यू के भीतर आइटमों को जोड़ने/निकालने का एनीमेशन - WPF

मेरे पास एक डाटाबेस ट्री व्यू है जहां पदानुक्रम केवल एक स्तर गहरा होगा। इसमें X संख्या के बच्चों के साथ रूट नोड्स की एक्स संख्या हो सकती है। हालांकि यह जितना गहरा है उतना गहरा है। मुझे जिस समस्या का सामना करना पड़ रहा है वह डाटाबेस संग्रह में आइटमों के जोड़/स्थान/निकालने को एनिमेट करने का सबसे अच्छा तरीका है।

ट्री व्यू का आइटमकंटनर स्टाइल एक कस्टम कंट्रोल टेम्पलेट पर सेट है, जो माउसओवर और चयनित स्टाइल प्रदान करता है। फिर मैं विभिन्न प्रकार के आइटम को इसके बाध्य होने के आगे लेआउट करने के लिए एक पदानुक्रम डेटाटाम्प्लेट का उपयोग करता हूं।

मुझे कई उदाहरण मिलते हैं कि वस्तुओं का विस्तार कैसे एनिमेट करना है, लेकिन जब कोई आइटम जोड़ा/स्थानांतरित/हटाया जाता है तो एनिमेटिंग के मामले में पूरी तरह से नहीं। एक उदाहरण मिला here बहुत कुछ दिखाता है जो मैं बाद में हूं लेकिन इसमें बहुत से कोड और लाइब्रेरी संदर्भ शामिल हैं जो मैं दूसरे शब्दों में अपर्याप्त मानता हूं। मैं समान कार्यक्षमता के अपने संस्करणों को शामिल करने के खिलाफ नहीं हूं। मैं बस उम्मीद कर रहा हूं कि मैं एक ही लक्ष्य को पूरा करने के लिए ईवेंट ट्रिगर्स या समकक्ष में हुक कर सकता हूं।

मैंने कोई उदाहरण कोड पोस्ट नहीं किया है क्योंकि मैं वास्तव में किसी भी समाधान के लिए खुला हूं और कुछ भी नहीं लिखा है जो "काम नहीं करता" और फिक्सिंग की आवश्यकता है। मैं कहां से शुरू करना है, इस बारे में राय तलाश रहा हूं। लागू होने वाले एनीमेशन का प्रकार भी अप्रासंगिक है क्योंकि जब तक मुझे पता है कि ऐड/मूव/हटाए जाने को कैसे एनिमेट करना है, तो मैं अपनी वरीयताओं और समग्र अंतिम प्रभावों के अनुरूप कोड को संशोधित और बदल सकता हूं।

उत्तर

2

चूंकि मुझे लगता है कि आप पूछ रहे हैं "मुझे इस समस्या से कैसे संपर्क करना चाहिए?" मैं आपको कुछ सुझाव दे सकता हूं।

  • प्रभाव के यांत्रिकी आप अपने कार्यक्रम की वास्तुकला

में

  • तारों कि प्रभाव को प्राप्त करने के लिए पहली समस्या मैं करूंगा के लिए कोशिश कर रहे हैं:

    आप हाथ में दो बुनियादी समस्या है एक साधारण गैर-एमवीवीएम अनुप्रयोग का उपयोग करके अपने प्रभावों को प्रोटोटाइप करने की अनुशंसा करें। विशेष रूप से आप संदर्भित लिंक से VisualStateManager विचारों का उपयोग कर सकते हैं और Animation अवधारणाओं को आप पेड़ सम्मिलन, गति और हटाने के प्रभावों को प्राप्त करने के लिए जटिल जटिल पुस्तकालयों के साथ पहले से ही परिचित हैं और अच्छे पुराने फैशन कोड-पीछे हैं। याद रखें कि आप बाद में सभी कोड से छुटकारा पाने की कोशिश करने जा रहे हैं और यह केवल प्रोटोटाइप के लिए है। असल में आप उस लिंक को कोड-बैक के लिए पोर्ट कर रहे हैं और जो भी क्रूफ़्ट इसका उपयोग करते हैं उसे हटा रहे हैं।

    एक बार जब आप प्रभाव प्राप्त कर रहे हैं तो आप प्राप्त करने की कोशिश कर रहे हैं, अब आपके पास पुरानी एमवीवीएम समस्या है जो इसे "ढीले युग्मन" के साथ आपके व्यू-मॉडल के साथ काम करने की समस्या है। डब्ल्यूपीएफ डाटाबेसिंग गुणों को सीधा बनाता है इसलिए एमवीवीएम डेटा के लिए दुनिया भर में एमवीवीएम है। लेकिन संचालन के लिए घटनाओं को व्यवस्थित रूप से संचालन से जोड़ने के लिए कई बाधाएं हैं और प्रत्येक एमवीवीएम ढांचा अलग-अलग ऐसा लगता है। एमवीवीएमलाइट में EventToCommand और System.Windows.Interactivity में CallMethodAction है और यह आगे बढ़ता है।

    तो अपने एमवीवीएम ढांचे के चयन के साथ अपने प्रभाव को एकीकृत करने के लिए, घटनाओं को संचालन से जोड़ने के लिए उस ढांचे के तंत्र का उपयोग करें, जो भी हो। हालांकि, आप हमेशा अपने दृश्य मॉडल के साथ काम करने के लिए कोड-बैक का थोड़ा सा उपयोग कर सकते हैं या सीधे दृश्य दृश्य को प्रेषित कर सकते हैं यदि आपको गोंद के काम को करने का कोई और तरीका नहीं मिल रहा है। यह आप पर निर्भर करता है।

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