2012-01-10 13 views
35

दोस्तों को निर्दिष्ट नहीं करना चाहिए, मैं WPF के लिए नया हूं।आंशिक घोषणाओं में अलग-अलग आधार वर्ग

मेरे पास StandardsDefault नामक एक wpf पृष्ठ है। कोड के पीछे, StandardsDefault अन्य सभी पृष्ठों की तरह Page विरासत में है।

<Page x:Class="namespace.StandardsDefault" 

public partial class StandardsDefault : Page 

अब मैं एक नया वर्ग CountryStandards जो पृष्ठ के बजाय StandardsDefault इनहेरिट है बनाया है।

<Page x:Class="namespace.CountryStandards" 

public partial class CountryStandards : StandardsDefault 

मैंने एक्सएएमएल नहीं बदला है। मैं "विभिन्न आधार वर्ग निर्दिष्ट नहीं होना चाहिए 'CountryStandards' के आंशिक घोषणाओं"

के रूप में त्रुटि हो रही है

मुझे लगता है कि समस्या हो सकती है कि डिजाइनर एक ही कक्षा इनहेरिट नहीं है। लेकिन मुझे किसी भी तरह की विरासत को लागू करने की आवश्यकता है क्योंकि कई मानक विधियों जैसे CountryStandards

क्या कोई मेरी मदद कर सकता है?

+0

आपने बेस क्लास सेट करने के लिए http://stackoverflow.com/questions/1297433/how-do-you-specify-a-different-base-class-in-xaml-files-silverlight में सभी चरणों का पालन किया है। 'CountryStandards' सही ढंग से? –

+1

स्थानीय के साथ घोषणा को ठीक करने के बाद: CountryStandards xmlns: स्थानीय = "उपयोग: ..." विजुअल स्टूडियो 2017 में, अनलोड प्रोजेक्ट पर क्लिक करें, त्रुटि सूची में इस त्रुटि से छुटकारा पाने के लिए प्रोजेक्ट को फिर से लोड करें। – Eric

+0

सभी उत्तरों अभी भी 'स्वीकार्य' मधुमक्खी के लायक नहीं हैं? –

उत्तर

2

में अपने CountryStandards.xaml आप लिखना चाहिए

<StandardsDefault x:Class="namespace.CountryStandards"... 
+0

डाउनवॉट्स क्यों? अपने वोट समझाओ। – Cullub

48

आप करने के लिए अपने CountryStandards XAML बदलना होगा: वहाँ WPF में एक कस्टम खिड़की/पृष्ठ से इनहेरिट के बारे में good article है

<src:StandardsDefault x:Class="namespace.CountryStandards" 
    xmlns:src="NamespaceOfStandardsDefault" ... /> 

0

सुनिश्चित करें कि अन्य आंशिक कक्षाएं एक अलग वर्ग का विस्तार नहीं कर रही हैं।

public partial class CountryStandards : StandardsDefault 

public partial class CountryStandards : Page 

आपको उन्हें एक ही कक्षा में विस्तार करना होगा।

0

आपको मानक नियंत्रण डीफॉल्ट को रूट नोड के रूप में उपयोग करने की आवश्यकता है क्योंकि आप उपयोगकर्ता नियंत्रण बना रहे हैं। चूंकि आप पेज का उपयोग कर रहे हैं क्योंकि रूट नोड सी # कंपाइलर आधार के रूप में पृष्ठ की अपेक्षा करता है। लेकिन आप में मानक के रूप में standardsDefault का उपयोग कर रहे हैं, इसलिए आपको मानक डोडॉल्ट को रूट नोड के रूप में उपयोग करने की आवश्यकता है, तो यह काम करेगा।

1

एक अजीब बात का बिट, और इसे अभी तक सूचीबद्ध नहीं किया गया है ... लेकिन चूंकि उपरोक्त में से कोई भी उत्तर लागू नहीं हुआ है क्योंकि मेरे पास दोनों एक्सएमएल और सीएस फाइलें सही तरीके से घोषित की गईं, मैंने निम्नलिखित किया और ऐसा लगता है काम:

समाधान फ़ोल्डर में जाओ या दिखाने के सभी फाइलों को विजुअल स्टूडियो के भीतर buton और दोनों obj और बिन फ़ोल्डरों हटाएं पर क्लिक करें, इस परियोजना के लिए अपनी फ़ाइलों के सभी पुनर्जीवित करने के लिए दृश्य स्टूडियो का कारण बनता है।

आपकी परियोजना को अब सही ढंग से बनाना/चलाया जाना चाहिए।

आशा है कि भविष्य में किसी को या शायद खुद को मदद मिलेगी।

संपादित करें: यह फ़िक्स आमतौर पर काम करता है यदि आपको पेज प्रकार बदलने के बाद यह समस्या मिलती है उदाहरण के लिए एक सामग्री पृष्ठ को एक कैरोसेल पेज पर।

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