2009-06-02 9 views
5

मैं अपनी खुद की एप्लिकेशन क्लास रखना चाहता हूं जो System.Windows.Aplication से प्राप्त होता है।डब्ल्यूपीएफ - सिस्टम से प्राप्त होता है। विन्डोज़। आवेदन

<src:MyBaseApplication x:Class="MyApplication" 
    xmlns:src="clr-namespace:MyApplication;assembly=WpfTestApplication" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="FPrincipal.xaml">  
    <Application.Resources> 

    </Application.Resources> 
</src:MyBaseApplication> 

यह क्रम में अच्छा काम करता है, लेकिन जब मैं परियोजना गुणों को संपादित, मैं परियोजना द्वारा निम्न त्रुटि संदेश प्राप्त होता है: समस्या Application.xaml फ़ाइल में, मैं इस तरह एप्लिकेशन घोषित करने के लिए है कि है विजुअल स्टूडियो के गुण संपादक:

इस प्रोजेक्ट के लिए एप्लिकेशन परिभाषा फ़ाइल लोड करने का प्रयास करने में त्रुटि हुई। फ़ाइल '[...] \ Application.xaml' को पार्स नहीं किया जा सका। त्रुटि को ठीक करने के लिए कृपया XAML संपादक में फ़ाइल संपादित करें। एप्लिकेशन परिभाषा फ़ाइल में अपेक्षित मूल तत्व "अनुप्रयोग" नहीं मिला।

परियोजना एक वीबी.नेट परियोजना है। किसी के पास कामकाज है? मैं application.xaml फ़ाइल रखना चाहता हूँ।

धन्यवाद

+0

क्या आपको कभी इस समस्या का समाधान मिला? –

+0

मैंने अभी कोशिश की है और कोई त्रुटि नहीं है, मैं System.Windows.Aplication से प्राप्त करने में सक्षम था, और उसके बाद इसे अपने ऐप.एक्सएएमएल में उपयोग कर सकता हूं, सबकुछ इसके जैसा काम करता है, कोई भी चीज़ किसी भी चीज़ के बारे में शिकायत नहीं करती है। – adminSoftDK

+0

@adminSoftDK: क्या आपने इसे VS2008 से आजमाया था? –

उत्तर

-1

यह कहना चाहिए < src: MyBaseApplication.Resources>?

+0

ठीक है आप कर सकते हैं, लेकिन चूंकि आप एप्लिकेशन से विरासत में हैं, आप एप्लिकेशन का भी उपयोग कर सकते हैं। स्रोत ... – Arcturus

-1

एप्लिकेशन आमतौर पर एक विंडो को इंगित करते हैं और xaml फ़ाइल से यह जानकारी प्राप्त करने का प्रयास करते हैं; लेकिन आप अपने XAML फाइल कि दृश्य स्टूडियो निर्धारित नहीं कर सकता में एक संदर्भ है ..

xmlns:src="clr-namespace:MyApplication;assembly=WpfTestApplication" 

तो वी.एस. अपने XAML फाइल पार्स नहीं कर सकता, और इस तरह है कि त्रुटि देता है ...

मेरे सुझाव: विंडो को ओवरराइड, या तो की तरह आवेदन पर एक्सटेंशन का उपयोग,:

public static class ApplicationExtensions 
{ 
    public static string GetAwesomeName(this Application) 
    { 
     return "I am an awesome application"; 
    } 
} 

इस तरह यह प्रयोग करें:

Application.Current.GetAwesomeName(); 
+0

आपको कुछ याद आती है। त्रुटि संदेश निर्दिष्ट करता है कि एप्लिकेशन टैग गुम है। यह सच है क्योंकि रूट टैग स्रोत है: MyBaseAplication। VisualStudio को एक अलग नाम के साथ रूट टैग खोजने के लिए पर्याप्त बुद्धिमान होना चाहिए। मुझे पहले से ही पता है कि मैं सी # में एप्लिकेशन को उपclass कर सकता हूं, लेकिन ऐसा करने से हम एप्लिकेशन से जुड़े .xaml फ़ाइल को खो देंगे। –

+0

क्या आपने xaml के उन टुकड़ों को संसाधन संसाधन में फिसलने पर विचार किया है और इसमें आपके आवेदन के संसाधनों में शामिल हैं? – Arcturus

2

मैंने इसे विजुअल स्टूडियो 2013 के साथ आजमाया है लेकिन मुझे किसी भी समस्या का अनुभव नहीं हुआ। तो, यह वीएस 2008 विशिष्ट होना चाहिए। क्या आपने अपनी एप्लिकेशन कक्षा को एक अलग वर्ग पुस्तकालय में पुनर्गठित करने का प्रयास किया था? शायद यह एक लॉकिंग मुद्दा है।

अद्यतन

चरणों यह ऐसा करने के लिए आदेश में मैं VB.NET VS2013 में किया था:

  1. कस्टम अनुप्रयोग वर्ग बनाएँ। मैंने इसे एक ही असेंबली में बनाया है। मेरे विधानसभा नाम था: WPFVBTest
Public Class CustomApplication 
    Inherits System.Windows.Application 

End Class 
  1. संशोधित Application.xaml। नामस्थान संदर्भ जोड़ें और रूट कंटेनर को कस्टम एप्लिकेशन क्लास में बदलें।
<self:CustomApplication x:Class="Application" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:self="clr-namespace:WPFVBTest" 
     StartupUri="MainWindow.xaml"> 
    </self:CustomApplication> 
  1. फ़ाइल के पीछे कोड संशोधित करें: Application.xaml।vb CustomApplication वर्ग से प्राप्त करना
Class Application 
    Inherits CustomApplication 

End Class 
  1. आवेदन बनाएँ। एक त्रुटि यह इंगित करनी चाहिए कि MyWpfExtension.vb एप्लिकेशन क्लास नाम के साथ समन्वयित नहीं है। यह एक जेनरेट क्लास है, लेकिन हर बिल्ड में पुनर्जन्म नहीं हुआ है। मुझे इसकी धोखाधड़ी पता है, लेकिन यह एकमात्र तरीका था जिसे मैं प्रबंधित कर सकता था। इसलिए मैं इसे मैन्युअल रूप से संशोधित:
Partial Class Application 
    Inherits CustomApplication 

इस तरह आवेदन बनाता है और एक समस्या के बिना चलाता है। मुझे आशा है कि यह आपको आपकी त्रुटि को हल करने में मदद करेगा।

+0

मुझे अभी भी वीएस 2015 में कोई समस्या है। मेरे परिदृश्य के लिए (मैंने बक्षीस सेट किया है), 'MyBaseAplication' वर्ग कक्षा पुस्तकालय में मौजूद है। लॉकिंग मुद्दे से आपका क्या मतलब है? –

+0

मैं क्या सोच सकता हूं, कि वीएस कस्टम एप्लिकेशन क्लास लोड नहीं कर सकता क्योंकि यह उपयोग में है। शायद वीएस स्वयं इसका उपयोग कर रहा है, या कुछ अन्य ऐप। क्या ऐसा होता है जब आप प्रोजेक्ट पर राइट क्लिक करते हैं और गुण खोलने का प्रयास करते हैं? क्या आप वीएस में किसी अन्य उपकरण का उपयोग करते हैं जो असेंबली का उपयोग कर सकता है? Reflector.NET या कुछ अन्य तृतीय पक्ष उपकरण? –

+0

बस पुष्टि करने के लिए - क्या आप इसे VB.NET के साथ कर रहे हैं? –

2

मुझे पता है कि यह एक लोकप्रिय उत्तर नहीं होने वाला है, लेकिन ... आप विजुअल स्टूडियो 2015 में क्यों अपग्रेड नहीं करते हैं? यह निःशुल्क है!

नरक, उन्होंने कल वीएस 2017 की घोषणा की; भी मुफ़्त

+0

मैं वीएस 2015 का उपयोग कर रहा हूं और यह अभी भी काम नहीं करता है। क्या आप सी # या वीबी.नेट का उपयोग कर रहे हैं? –

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