2009-09-30 13 views
5

यह कस्टम नियंत्रण में मेरा पहला प्रयास है, और यह ठीक नहीं चल रहा है। मेरे पास कैनवास से व्युत्पन्न कस्टम ग्राफ नियंत्रण है।wpf कस्टम नियंत्रण पहचाना नहीं गया

namespace Grapher2 { 
    public class SeriesManager : Canvas { 
     public SeriesManager() { 
      ... 
     } 
    } 
} 

यह मेरे ऐप के समान प्रोजेक्ट और नेमस्पेस में परिभाषित किया गया है। मैं XAML में नियंत्रण के लिए एक संदर्भ के रूप में इस जोड़ने की कोशिश की:

<Window x:Class="Grapher2.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:graph="clr-namespace:Grapher2" 
Title="Grapher" Width="800" Height="600"> 

<StackPanel Name="container" Width="700" Height="500"> 
    <graph:SeriesManager Name="seriesManager" Width="700" Height="500" /> 
</StackPanel> 

लेकिन जब मैं नियंत्रण नाम "seriesManager" संदर्भ के लिए कोड-पीछे खिड़की के लिए में कोशिश, मैं "मिल नाम 'श्रृंखला प्रबंधक' वर्तमान संदर्भ में मौजूद नहीं है। "

इसके अलावा, एक्सएएमएल संपादक विंडो को प्रस्तुत नहीं करेगा, त्रुटि के साथ एक विशाल स्टैक ट्रेस दे रहा है: "टाइप करें 'एमएस। आंतरिक.प्रमिशन.यूसर इंटीग्रेटेड नेविगेशन पैरामिशन' असेंबली में 'प्रेजेंटेशनफ्रेमवर्क, संस्करण = 3.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35 'को धारावाहिक के रूप में चिह्नित नहीं किया गया है। "

मुझे लगता है कि समाधान कस्टम नियंत्रण करने वाले किसी भी व्यक्ति के लिए बेवकूफ सरल है। लेकिन मैं फंस गया हूँ।

उत्तर

11

क्या आपने अपने xaml में x: name = "seriesManager" का प्रयास किया था?

संपादित करें: यह समस्या नहीं हो सकती है कि आपने यह कहा कि आपका xaml प्रतिपादन नहीं कर रहा है। एक बार जब आप डिजाइनर में प्रस्तुत करने के लिए xaml प्राप्त करते हैं तो मुझे अनुमान लगाया जा रहा है ... पीछे कोड बेहतर काम करेगा।

संपादित करें 2: जब भी मुझे डिजाइनर प्रतिपादन में कोई समस्या हो, ऐसा इसलिए है क्योंकि मैं अपने कस्टम नियंत्रण के निर्माता में कुछ कर रहा हूं। यह देखने के लिए कि क्या आप अपने कन्स्ट्रक्टर में कुछ कर रहे हैं, जो समस्या पैदा कर रहा है, अपने सीरीज मैनेजर को जांचें। शायद आप कुछ ऐसा संदर्भित कर रहे हैं जो अभी तक मौजूद नहीं है। अगर आपके पास अपने कन्स्ट्रक्टर में अतिरिक्त कोड है, तो इसे UserControl_Loaded ईवेंट पर ले जाने पर विचार करें।

+4

x: समान असेंबली के संदर्भों के लिए नाम आवश्यक है, इसे कोड-बैक में "श्रृंखला प्रबंधक" संदर्भित करने में सक्षम नहीं होने के मुद्दे को ठीक करना चाहिए। अधिक जानकारी: http://stackoverflow.com/questions/1380112/why-cant-i-use-the-name-attribute-on-usercontrol-in-the-same-assembly – Zenuka

+0

ओह और बीटीडब्ल्यू एक्स का उपयोग करके: नाम नाम आपकी सभी समस्याओं को ठीक कर सकता है, पहले इसे आजमाएं और अगर हमें और समस्याएं हैं तो हमें बताएं ... – Zenuka

+1

x: नाम इसे ठीक कर दिया गया है! धन्यवाद! – Klay

0

स्कॉट जवाब का बैक अप लिया यहाँ है, क्योंकि वह मुझे इसे हल में मदद मिली:

क्या मैं गलत InitializeComponent() से पहले नियंत्रण का उपयोग करने की कोशिश कर रहा था था, लेकिन कहीं न कहीं कोड में और 2 अन्य त्रुटि संदेश से उलझन में था। बस किसी और के पास यह त्रुटि है।