2015-05-08 9 views
8

मुझे एक सार्वजनिक संपत्ति के साथ एक कस्टम उपयोगकर्ता नियंत्रण मिला है जिसे मैं एक्सएएमएल में सेट करने में सक्षम होना चाहता हूं। यहां यह नीचे है।मैं अपने WPF उपयोगकर्ता नियंत्रण पर "सदस्य पहचान नहीं है या पहुंच योग्य नहीं है" त्रुटि क्यों देख रहा हूं?

TestControl.xaml

<UserControl x:Class="Scale.Controls.TestControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 

TestControl.xaml.cs

using System.Windows.Controls; 

namespace MyProject.Controls 
{ 
    public partial class TestControl : UserControl 
    { 
     public string TestMe { get; set; } 
     public TestControl() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

फिर, मेरी MainWindow.xaml फ़ाइल में, मैं इस में शामिल करने की कोशिश:

<controls:TestControl TestMe="asdf" /> 

हालांकि, विजुअल स्टूडियो टेस्टएम संपत्ति को स्वत: पूर्ण करता है, फिर भी मैं नीचे की तरफ देखा गया है, "सदस्य" टेस्ट मी "पहचान नहीं है या पहुंच योग्य नहीं है।"

The member "Test Me" is not recognized or is not accessible

मुझे लगता है मैं अन्य परियोजनाओं में से पहले कुछ इस तरह किया है शपथ ली हो सकता था। मैं इस तरह XAML के माध्यम से सार्वजनिक गुणों (यानी सेट) कैसे कर सकता हूं?

उत्तर

3

इसके बजाय आप पर नियंत्रण के लिए कई निर्भरता गुण स्थापित करने के रूप में Dependency Properties

namespace MyProject.Controls 
{ 
    public partial class TestControl : UserControl 
    { 
     //Register Dependency Property 

     public static readonly DependencyProperty TestMeDependency = DependencyProperty.Register("MyProperty", typeof(string), typeof(TestControl)); 

     public string MyCar 
     { 
      get 
      { 

       return (string)GetValue(TestMeDependency); 

      } 
      set 
      { 
       SetValue(TestMeDependency, value); 
      } 
     } 

     public TestControl() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+0

यह कैसे करना है इसका एक उदाहरण अच्छा होगा – SoaperGEM

+0

आशा है कि यह आपको –

+1

में मदद करेगी, मैं आपकी परियोजना को इस तरह से बनाना चाहिए। यदि संपत्ति बाध्यकारी का लक्ष्य होने जा रही है तो आपको केवल एक निर्भरता संपत्ति की आवश्यकता है। मैंने अभी इसी तरह के परिदृश्य का परीक्षण किया है और यह आपके प्रश्न में दिखाए गए अनुसार बनाता है। बहुत उपयोगी नहीं है ... लेकिन बनाता है। वीएस बनाने के बाद मेरी मशीन पर शिकायत बंद हो जाती है। – Sam

-1

अपनी संपत्ति की घोषणा करने की जरूरत है, मैं प्रतिबिंब का प्रयोग करेंगे।

public static readonly DependencyProperty UserControlProperty = DependencyProperty.Register("UserControl", 
typeof(object), typeof(CustomUserControl), new PropertyMetadata(null)); 

    public object UserControl 
    { 
      get { return GetValue(UserControlProperty); } 
      set { SetValue(UserControlProperty, value); } 
    } 
11

विजुअल स्टूडियो 2017

मैं बिल्कुल वैसा ही समस्या थी। यह एक दिन संकलित था ... और फिर यह नहीं था। मैं निर्भरता प्रॉपर्टी का उपयोग नहीं कर रहा था जिसे ऊपर की आवश्यकता नहीं है। गुण इंटेलिजेंस में दिखाई दे रहे थे लेकिन सम्मिलित होने पर एक ही संदेश दिया। मैंने साफ, निर्मित, पुनर्निर्मित, वीएस को पुनरारंभ किया, रीबूट किया आदि। सभी को कोई फायदा नहीं हुआ।

आखिरी खाई कोशिश करें ... मैंने सभी अपमानजनक विशेषताओं को हटा दिया और एक साफ संकलन प्राप्त किया। तब मैंने उन्हें वापस रख दिया और संकलित किया। मैं वास्तव में इसकी उम्मीद नहीं कर रहा था। किसी भी तरह वीएस एक मोड़ में अपने knickers मिल गया था।

+1

यदि पुनर्निर्माण परियोजना में मदद नहीं मिली है। किसी भी पीपी से x86 या x64 में प्लेटफॉर्म बदलने का प्रयास करें। यह इस मुद्दे को हल करेगा। –

+0

वही बात यहाँ है, जैसे @ सोनीनी ने कहा। अतुलनीय लेकिन यह काम करता है। –

0

किसी भी सीसीपीयू से निर्माण लक्ष्य को या तो x86 या x64 में बदलें। सुनिश्चित करें कि क्यों कोई भीCPU काम नहीं करता है।

+1

आप सही हैं। मुझे ऊपर बताई गई जैसी ही समस्या थी। वीएस को पुनरारंभ करना, पुनर्निर्माण में मदद नहीं मिली। किसी भी सीसीपीयू से प्लेटफ़ॉर्म बदलें अन्य समस्या को हल करता है। –

+0

हां। यह काम करता हैं... –

-1

मेरे मामले में, मेरी कक्षा को संशोधित करने के बाद मूल रूप से कोई त्रुटि नहीं है, मेरी कक्षा में कुछ त्रुटियां हैं तो Xaml त्रुटि member is not recognized शो। मेरी कक्षा में त्रुटियों को हल करने के बाद, मैं परियोजनाओं का निर्माण पास करता हूं, सभी परियोजनाएं त्रुटियों के बिना बनाई जाती हैं, लेकिन त्रुटियां अभी भी Error List Window में दिखाई देती हैं। अंत में, मैं विजुअल स्टूडियो को पुनरारंभ करता हूं, त्रुटियां गायब हो जाती हैं।

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