2010-07-30 13 views
21

मैं एक ऐसी परियोजना पर काम कर रहा हूं जो किसी पुराने प्रोजेक्ट पर आधारित है और शुरू नहीं हुआ है। मैं जितना संभव था उतना कोड इस्तेमाल करने की कोशिश कर रहा था, इसलिए ऐसा करने में मैंने कुछ चिमटा मुद्दों में भाग लिया।डब्लूपीएफ के बराबर सिल्वरलाइट 4 "x: static"

अर्थात्, जब मैंने नई परियोजना में पुराने xaml में से कुछ डाल दिया तो कुछ त्रुटियां थीं जो "एक्स: स्थैतिक" संपत्ति और "गतिशील संपत्ति" के बारे में बताई गई थीं।

त्रुटि: 1: प्रकार 'DynamicResource' नहीं मिला था

यहाँ त्रुटि संदेश खुद को कर रहे हैं। सत्यापित करें कि आप एक असेंबली संदर्भ नहीं खो रहे हैं और सभी संदर्भित असेंबली का निर्माण किया गया है।

त्रुटि 2: प्रकार 'एक्स: स्टेटिक' नहीं मिला था। सत्यापित करें कि आप असेंबली संदर्भ नहीं खो रहे हैं और सभी संदर्भित असेंबली का निर्माण किया गया है।

कुछ उल्लेखनीय बिंदु जो मुझे लगता है कि त्रुटियां पैदा कर रही हैं: पुरानी परियोजना को वीएस -2008, डब्ल्यूपीएफ, वी 3.5 में प्रोग्राम किया गया था। नेट फ्रेमवर्क; जबकि मैं वीएस -2010, सिल्वरलाइट 4, नेट फ्रेमवर्क v4.0 में प्रोग्रामिंग कर रहा हूं।

मुझे एहसास है कि डब्ल्यूपीएफ से सिल्वरलाइट तक अंतर है जहां तक ​​xaml जाता है और अलग-अलग नेट फ्रेमवर्क संस्करणों और विजुअल स्टूडियो के संस्करणों में बहुत अंतर हैं। लेकिन मुझे बस इसके लिए कोई फिक्स नहीं मिल रहा है, इसलिए मुझे नहीं पता था कि सिर्फ एक लाइब्रेरी थी जिसे मैं याद कर रहा था या बस कुछ जो मैं बस देख रहा हूं या क्या।

यदि आवश्यकता हो तो मैं इसे फिर से बना सकता हूं, लेकिन जैसा कि मैंने कहा था, मैं जितना पुराना कोड उतना उपयोग करूँगा जितना मैं कर सकता हूं जब तक कि ट्वीविंग इससे अधिक परेशानी न हो।

उत्तर

15

दुर्भाग्य से, आप सीधे XAML के सिल्वरलाइट के सबसेट में DynamicResource और स्टेटिक कीवर्ड का उपयोग नहीं कर सकते हैं, लेकिन आप अपने व्यवहार की नकल कर सकते हैं।

सामान्य में, वहाँ कोई आसान तरीका WPF से Silverlight के लिए एक परियोजना विस्थापित करने के लिए है: यहाँ विषय पर लेख है। उनके पास बहुत आम है, लेकिन कड़ाई से बोलना एक अलग तकनीक है।

+1

मैं पूरी तरह से सहमत हूं कि एक WPF प्रोजेक्ट को सिल्वरलाइट में माइग्रेट करना आसान नहीं है। हालांकि मैं इन्हें एक शॉट दूंगा। आपको बहुत - बहुत धन्यवाद! – AmbiguousX

+0

आपका स्वागत है) – n535

+0

"सिल्वरलाइट 3 में डायनामिक रिसोर्स की नकल करना" लिंक मर चुका है। –

2

स्थिर गुणों के लिए बाध्यकारी प्राप्त करने का एक और तरीका - कोड में बाध्य करने के लिए। नीचे एक उदाहरण है।

मुख्य आवेदन वर्ग:

public partial class App : Application 
{ 
    public static MyViewModel MyViewModel { get; private set; } 

    // ... 
} 

मुख्य खिड़की मार्कअप:

<TextBlock Loaded="MyTextBlockLoaded" /> 

मुख्य खिड़की बैक कोड: जाँच के

public partial class MainPage : PhoneApplicationPage 
{ 
    // ... 

    private void MyTextBlockLoaded(object sender, RoutedEventArgs e) 
    { 
     TextBlock textBlock = ((TextBlock)sender); 
     if (textBlock.Tag == null) 
     { 
      textBlock.Tag = true; 
      Binding bind = new Binding("MyInfo"); 
      bind.Source = App.MyViewModel; 
      bind.Mode = BindingMode.OneWay; 
      textBlock.SetBinding(TextBlock.TextProperty, bind); 
     } 
    } 
} 

शायद TextBlock.Tag दृष्टिकोण, बाध्यकारी पहले से ही स्थापित किया गया था या नहीं, सबसे सुंदर नहीं है, लेकिन यह काम करता है।

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