2009-06-05 4 views
42

यह बहुत अजीब है।क्यों विजुअल स्टूडियो मेरे WPF InitializeComponent विधि को नहीं ढूंढ सकता?

मैं एक XAML फ़ाइल है कि इस प्रकार लग रहा है ...

<Window 
    x:Name="window" 
    x:Class="ix.Production.Title" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Title" Height="768" Width="1024" 
    Loaded="window_Loaded"> 

    <Window.Resources> 
    etc... 

और मेरे कोड-बगल में है कि इस प्रकार लग रहा है ...

using System; 
using System.Windows; 
using System.Windows.Media.Animation; 
using System.Threading; 

namespace ix.Production 
{ 
    public partial class Title : Window 
    { 
     public Title() 
     { 
      InitializeComponent(); 
     } 
    .... 

इस कोड क्योंकि दृश्य स्टूडियो को संकलित करने के लिए मना कर दिया है जोर देकर कहते हैं कि InitializeComponent "वर्तमान संदर्भ में मौजूद नहीं है।"

मैं इस समस्या को कैसे ठीक कर सकता हूं?

+0

Arg, मेरी तरफ से मूर्ख टाइपो (मेरे पास दो समान परियोजनाएं हैं)। वर्ग नामस्थान वास्तव में सही है, लेकिन मुझे अभी भी वही त्रुटि मिलती है। – willem

उत्तर

0

इस तरह लग रहा है दृश्य स्टूडियो में एक गांठ 2008

अगर मैं एक नई फ़ाइल (यानी शीर्षक 2) बनाने के लिए, कॉपी/पेस्ट कोड था और एक्सएएमएल, फिर सभी 'शीर्षक' को 'शीर्षक 2' में बदलें, सब कुछ ठीक काम करता है।

0

आपकी कक्षा आंशिक है, इसलिए आपके पास एक और फ़ाइल होनी चाहिए जिसमें आपके शीर्षक वर्ग के कुछ अन्य भाग शामिल हों (उदाहरण के लिए प्रारंभिक कॉम्पोनेंट विधि)। उस फ़ाइल को खोजने का प्रयास करें, और देखें कि उस फ़ाइल में नेमस्पेस फ़ाइल के नामस्थान के बराबर है जिसमें आपकी कक्षा के अन्य भाग शामिल हैं।

+0

यह आंशिक कहता है ... लेकिन मुझे आश्चर्य है कि क्या वास्तविक InitializeComponent कहीं भी WPF द्वारा जेनरेट नहीं किया गया है? मुझे यकीन नहीं है। इसे खोजने में सक्षम नहीं है। – willem

30

आपका XAML का कहना है:

x:Class="ix.Production.Title" 

जबकि वास्तविक वर्ग ix.Outage.Title है। या तो XAML घोषणा बदलें या कक्षा को ix.Production नामस्थान पर ले जाएं।

+0

यह! विजुअल स्टूडियो कॉपी-पेस्ट और नेमस्पेस से नापसंद ... –

+0

धन्यवाद, प्रतिलिपि पेस्ट फिर से गलत हो जाता है :) – Yablargo

5

आपका नामस्थान मेल नहीं खाते:

x:Class="ix.Production.Title" 
namespace ix.Outage { ... 
0

मैं यहां एक ही मुद्दे के साथ संघर्ष कर रहा था। मैंने जो किया है, सभी बनाई गई फ़ाइलों को डिबग फ़ोल्डर को मिटाना है, फिर समाधान को पुनर्निर्माण करें।

सादर, Petrus

0

मैं एक ही समस्या का सामना करना था, जब मैं MSDN से एक परियोजना नमूना मिला है। मुद्दा यह था कि यह एक 4.0 प्रोजेक्ट था और मेरे पास 4.0 में सिस्टम नहीं था, कुछ संदर्भित डीएल गायब थे (system.xaml और दूसरा) उन्हें हटा दिया। संकलन करने की कोशिश की, हमेशा प्रारंभिक compcomentent विधि फेंक दिया जाएगा। परियोजना संपत्तियों में चला गया लक्ष्य ढांचे को 3.5 में बदल दिया और यह अब शिकायत नहीं कर रहा है।

1

मैं एक दृश्य   स्टूडियो   2010 नमूना परियोजना है कि मैं मैन्युअल रूप से दृश्य   में वापस लाई स्टूडियो   2008 मैंने पाया मैं .NET फ्रेमवर्क 3.5 के लिए परियोजना के लक्ष्य फ्रेमवर्क स्थापित करने के लिए भूल गया था के साथ एक ही समस्या थी। यह प्रोजेक्ट में खाली था   स्टूडियो   2008, मूल रूप से मूल दृश्य   स्टूडियो   2010 प्रोजेक्ट में 4.0 पर सेट किया गया था।

किसी प्रोजेक्ट के लक्ष्य ढांचे को सेट करने के लिए, प्रोजेक्ट गुणों पर जाएं, नामक पहले टैब तक पहुंचें, और लक्ष्य फ्रेमवर्क ड्रॉपडाउन में .NET Framework 3.5 का चयन करें।

बेशक, मैं विजुअल स्टूडियो को मुझे एक त्रुटि या कम से कम एक चेतावनी देना चाहता हूं कि मैंने अपना लक्ष्य ढांचा निर्धारित नहीं किया है, लेकिन हे, यह विजुअल स्टूडियो में विकसित होने का हिस्सा है, मुझे लगता है।

Visual Studio 2008 WPF project properties

44

ही एक मामला मैं में जब आप एक XAML नियंत्रण/खिड़की, आदि InitializeComponent विधि एक इसी .g.cs फ़ाइल कि स्वचालित रूप से उत्पन्न होता है में मौजूद पेस्ट कॉपी हो रहा देखा है। मेरे मामले में, प्रतिलिपि पेस्ट के बाद, XAML (गुण विंडो में) के लिए कार्रवाई बनाएँ "संसाधन" में बदल दिया गया था। I ने इसे "पृष्ठ" में बदल दिया, और यह ठीक काम करना शुरू कर दिया।

मुझे उम्मीद है कि इससे मदद मिलती है।

धागा जिसने मुझे इसकी सहायता की थी The name 'InitializeComponent' does not exist...

+2

मुझे यह जांचने के लिए बहुत अच्छा है, कॉपी करने और चिपकाने के दौरान मुझे यह समस्या बहुत अच्छी है। – cab

+0

याप, परियोजनाओं के बीच XAML फ़ाइलों की प्रतिलिपि बनाते समय बस यह समस्या थी –

+3

+1 मेरा कट और पेस्ट ऑपरेशन के बाद 'CodeAnalysisDictionary' में बदल गया ... अच्छा माइक्रोसॉफ्ट! सभी इसे वापस 'पृष्ठ' पर सेट करने के बाद तय किए गए हैं। बहुत धन्यवाद जीपी। – Sheridan

13

तो आसान है, लेकिन इतना आसान अनदेखी: MainWindow के x:Class "MainWindow", यह namespace.MainWindow (x:Class="namespace.MainWindow") के लिए सेट किया जाना चाहिए था जब करने के लिए किया गया स्थापित किया गया था। यदि यह नहीं किया जाता है, तो MainWindow.g.xaml फ़ाइल में नामस्थान ब्लॉक शामिल नहीं होगा, और InitializeComponent() पर कॉल MainWindow के कन्स्ट्रक्टर में काम नहीं करेगा।

हालांकि यह स्पष्ट रूप से विलेम की समस्या का समाधान नहीं है, मैंने इसे यहां पोस्ट किया क्योंकि सूचीबद्ध कई अन्य समाधान हैं। उम्मीद है कि यह किसी और की मदद करेगा जो इस समस्या पर अपनी समस्या को ठीक करने की कोशिश करते समय ठोकर खाएगा।

2

कस्टम नियंत्रण कक्षाओं का नाम बदलते समय, या आपके मामले में, कक्षा के नामस्थान का नाम बदलते समय मुझे आमतौर पर यह समस्या मिलती है। यदि आप विजुअल स्टूडियो के रिफैक्टरिंग का उपयोग नहीं करते हैं, तो आपको XAML और C# फ़ाइलों दोनों में मैन्युअल रूप से नाम बदलना होगा।

रिफैक्टरिंग केवल तभी अच्छा होता है जब आप नाम का नाम बदलने के लिए कक्षा का नाम बदलते हैं, तो आपको इसे मैन्युअल रूप से करना होगा।

InitializeComponent के लिए, [Project Folder]\obj\Debug\<class_name.g.cs> देखें।

+1

या बस पूरी \ obj फ़ाइल को हटाएं और विजुअल स्टूडियो को इसे – JordanBean

+0

पुनर्निर्माण करने दें या वह, मैं एक पूर्ण उत्तर के लिए जा रहा था :) –

0

Fwiw, मैं एक दृश्य   स्टूडियो के प्रवास के बाद एक ही समस्या आज मारा   2008 दृश्य   स्टूडियो   2010 का हल ऐसा लगता है कि माइग्रेशन goofed और परियोजनाओं खो Target Framework (प्रोजेक्ट गुण में) उनके: सेटिंग है अब खाली !?

.NET Framework 3.5 सेट करना समस्या हल हो गई।

1

मैं अपने पीसीएल (जिसमें मेरी डेटा कक्षाएं शामिल हैं) को हल करने के बाद कोड से InitializeComponent, और अन्य XAML- संबंधित UI बिट्स को खोजने में असमर्थ हो गया।

: |

लेकिन अगर मैं पीसीएल को हटा देता हूं .. यह फिर से मिल सकता है।

भले ही, यह पाया गया या नहीं - मैं अभी भी संकलित कर सकता हूं। जब मैं कोड टाइप करता हूं तो मैं स्वतः पूर्ण नहीं हो सकता।

शायद आपके पास अपने समाधान में पीसीएल प्रोजेक्ट है? (मैं कैसे अभी तक इसे ठीक करने के पता नहीं है)

0

यह मुझे क्या हुआ, क्योंकि दृश्य स्टूडियो "कार्रवाई बनाएँ" कुछ यादृच्छिक कार्रवाई करने के लिए सेट है जब आप कॉपी/पेस्ट या करने के लिए एक परियोजना से एक XAML फाइल को स्थानांतरित एक समाधान के भीतर एक और।

समाधान: सुनिश्चित करें कि आपका "बिल्ड एक्शन" आपके लिए एक्सएएमएल पृष्ठ पर सेट है।

मुझे आशा है कि इससे मदद मिलती है यदि यह आपके लिए एक ही मामला है।

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