2010-01-13 20 views
5

मैंने कस्टम नियंत्रण बनाया है जो सामग्री नियंत्रण बढ़ाता है। इसके भीतर मेरे पास एक पुर्जे और राज्य मॉडल हैं जो ठीक काम कर रहे हैं।कस्टम कंट्रोल पर दृश्य स्टेट मैनेजर

मैं तो मेरे XAML की जड़ (मिश्रण में टेम्पलेट्स फ़ोल्डर में कोड रखने)

सब कुछ ठीक काम करता है के रूप में उपयोग, मैं एक नया 'DaveControl' खोल सकते हैं और कार्यक्षमता है कि मैं चाहता हूँ मिलता है।

हालांकि, अगर मैं यहां कुछ दृश्य राज्य जोड़ता हूं, जैसे अलर्टऑनस्क्रीन और विजुअलस्टेटमैनर का उपयोग करने का प्रयास करें तो यह काम नहीं करता है।

वास्तव में कोई राज्य सूचीबद्ध नहीं है।

एसएल 3 में व्यवहार GotoVisualState हालांकि ठीक काम करता है!

कोड में काम करने के लिए दृश्य स्थिति कैसे प्राप्त कर सकता हूं?

+0

व्यवहार के माध्यम से ब्राउज़ करना, यह नियंत्रण के बजाय एक ढांचा तत्व लेता है। यह काम। – DavidA

उत्तर

7

तो समाधान निम्नलिखित है!

ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true); 

यह काम करता है क्योंकि यह अन्य चीजों के साथ एक फ्रेमवर्क तत्व लेता है। Workaround for VisualStateManager.GoToState not working on Window

+0

+1 यह सबसे अच्छा है कि वास्तविक उत्तर पहले दिखाई देता है;) – AnthonyWJones

1

क्या आपने कक्षा में TemplateVisualState विशेषताओं के सेट के रूप में उपलब्ध राज्यों का सेट जोड़ा है? ब्लेंड इन उपलब्ध राज्यों की सूची को कॉन्फ़िगर करने के लिए इनका उपयोग करता है।

आपका वर्ग आम तौर पर इस तरह दिखना चाहिए: -: उपयोग विस्तारित दृश्य राज्य प्रबंधक

[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")] 
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")] 
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")] 
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")] 
[TemplatePart(...)] 
[TemplatePart(...)] 
public class MyControl : ContentControl 
+0

एंथनी, नियंत्रण के लिए दृश्य राज्य वहां काम करते हैं। नियंत्रण मूल रूप से एक कस्टम कंटेनर है ... मैं इसे अपने xaml फ़ाइल-> न्यू डेव कंट्रोल में मूल तत्व के रूप में उपयोग करता हूं (जिस तरह से मैं आंशिक श्रेणी की समस्या के बिना कक्षा से प्राप्त कर सकता हूं)। अब कहें कि इस नियंत्रण में 'एड्रेस एड्रेस' पर एक बटन है जिसके लिए मंच पर कुछ कदम उठाने की आवश्यकता है, इस उदाहरण के लिए कस्टम .... इसलिए मेरी समस्या। प्रतिक्रिया के लिए धन्यवाद, शीर्षक के साथ मुझे यकीन है कि यह किसी की मदद करेगा। – DavidA

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