2012-10-16 19 views
5

में WPF का उपयोग करके डिज़ाइन मोड का पता लगाना मैं WPF का उपयोग कर रहा हूं। मेरे पास एक स्थिर वर्ग है जो कुछ सेटअप करता है जो डिज़ाइन मोड के दौरान उपलब्ध नहीं है। इस कन्स्ट्रक्टर को डिज़ाइन मोड में एक विंडो द्वारा बुलाया जाता है, जिसके परिणामस्वरूप एक अपवाद फेंक दिया जाता है।एक स्टेटिक विधि

मैं एक स्थिर विधि में डिज़ाइन मोड का पता कैसे लगा सकता हूं, इसलिए मैं उपयुक्त डिज़ाइन मोड व्यवहार का आह्वान कर सकता हूं?

recommended approach स्थिर तरीकों के लिए काम नहीं करता है।


संपादित करें:

स्थिर निर्माता XAML से कहा जाता है, तो मैं सशर्त यह फोन नहीं कर सकते हैं (जब तक मैं कोड-पीछे है, जो मैं से बचने के लिए चाहते हैं, उनके कॉल ले जाते हैं)।

विंडो में: <Window ... HelpProvider.Keyword="some_help_topic.html">

वर्ग में:

static HelpProvider() 
{ 
    // Load the .chm file from an application setting (this fails at design time) 

    // Add a WPF command binding 
} 
+0

अपनी विंडो में डिज़ाइन मोड की जांच करें और यह निर्धारित करें कि आपको वहां स्थिर सेटअप विधि कहने की आवश्यकता है या नहीं। –

+0

यदि यह आपके लिए काम नहीं करता है, तो कृपया एक कोड स्निपेट प्रदान करें जिसे आप काम करने की कोशिश कर रहे हैं, कृपया। –

+0

सोचा था कि मेरे पास था लेकिन यह नहीं देखा कि आप पीछे कोड का उपयोग नहीं करना चाहते हैं और आपके पास ऐसी अजीब स्थितियां थीं। माफ़ कीजिये। 'DesignerProperties.GetIsInDesignMode (Application.Current.MainWindow) 'का उपयोग करने के लिए अनुशंसित, लेकिन वास्तव में मुझे नहीं पता कि यह आपकी अजीब स्थिति के लिए काम करता है या नहीं। – Akku

उत्तर

4

XAML फाइल में संलग्न संपत्ति रखने इसे हल करने के लिए संभव तरीका है: स्थिर निर्माता से

  1. ले जाएँ प्रवर्तन कोड संलग्न संपत्ति के लिए कॉलबैक बदल दिया। स्पष्ट रूप से, स्थिर रचनाकारों में इस तरह के काम करने के लिए अच्छा अभ्यास नहीं है।
  2. आपकी संलग्न संपत्ति में कॉलबैक बदल गया है, आपके पास अपनी विंडो का संदर्भ है। तो आप DesignerProperties.GetIsInDesignMode(yourwindow) पर कॉल कर सकते हैं और निर्णय ले सकते हैं, अगर आपको फ़ाइल लोड करने की आवश्यकता है या जो कुछ भी कारण बनता है।
+0

अच्छा। मैं काम करने में कामयाब नहीं रहा था कि स्थैतिक कन्स्ट्रक्टर से प्रारंभिक कोड को कैसे स्थानांतरित किया जाए। – Mashmagar