2011-05-20 6 views
5

दुर्भाग्य से मैं पाया है कि कभी कभी कोड मैं, लिख रहा हूँ, जबकि रन-टाइम में बिल्कुल ठीक, का कारण बनता है मुझे सिर दर्द जब दृश्य स्टूडियो 2010 मेरा पसंदीदा में XAML/डिजाइनर के साथ काम उदाहरणों में डिबगिंग के लिए कई संदेश बॉक्स शामिल हैं, हालांकि, वर्तमान उदाहरण कन्स्ट्रक्टर में एक बहुत हल्का सिंगलटन-शैली की स्थिति है जिसका अर्थ है कि जब मैं XAML में उदाहरण में परिवर्तन करना चाहता हूं तो मुझे समाधान का पुनर्निर्माण करना होगा।सी # प्रीप्रोसेसर - XAML डिजाइनर के लिए अक्षम करना कोड

वहाँ एक पूर्वप्रक्रमक निर्देश है कि मैं XAML डिज़ाइनर में कोड छोड़ लिए उपयोग कर सकते है?

उदाहरण:

public class CustomFE : FrameworkElement 
    { 
     public CustomFE() 
     { 
#if !XAMLDesigner // Or something similar 
      if (_instance != null) 
       throw new NotSupportedException("Multiple instances not supported"); 
#endif 

      _instance = this; 
     } 

     private static CustomFE _instance = null; 

     public static CustomFE Instance 
     { 
      get { return _instance; } 
     } 
    } 
+0

यह भी देखना http://stackoverflow.com/questions/425760/is-there-a-designmode -प्रोपर्टी-इन-डब्ल्यूपीएफ –

उत्तर

4

आप DesignerProperties.GetIsInDesignMode विधि, इसलिए की तरह उपयोग कर सकते हैं:

if (!DesignerProperties.GetIsInDesignMode(this) && _instance != null) 
    throw new NotSupportedException(...) 
+0

वास्तव में? इसके लिए कोई प्रीप्रोकैसिंग नहीं है? वह थोडा बेकार है ... – Melodatron

+0

@Melodatron - क्षमा करें, कोई प्रीप्रोसेसर निर्देश नहीं है और यह वास्तव में काम नहीं करेगा। आइए मान लें कि आप अपनी परियोजनाओं में उपयोग के लिए अन्य देवताओं को कस्टमएफई भेजते हैं। प्रीप्रोसेसर निर्देश संकलन समय पर जाना जाना चाहिए। उपर्युक्त विधि का उपयोग करके, मूल्यों का उपयोग गतिशील रूप से स्विच किया जा सकता है कि देव इसका उपयोग कैसे कर रहे हैं। – CodeNaked

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