2015-05-08 15 views
8

XAML'de ayarlayabileceğim bir kamuya ait özel bir kullanıcı denetimi var. İşte aşağıda.Neden WPF Kullanıcı Denetimi'nde "üye tanınmadı veya erişilemiyor" hatası görüyorum?

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(); 
     } 
    } 
} 

Sonra benim MainWindow.xaml dosyasında, bunu eklemeyi deneyin:

<controls:TestControl TestMe="asdf" /> 

Ancak, Visual Studio, TestMe özelliğini otomatik olarak tamamlasa da, aşağıda görüldüğü gibi, "Üye" Beni Test Et "tanınmayan veya erişilemeyen" şaşkın bir alt çizgiyle şeyleri görüyorum.

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

ben diğer projelerde daha önce böyle bir şey yaptık yemin edebilirdim. Kamusal özelliklere nasıl XAML üzerinden bu şekilde erişebilirim (örneğin)?

cevap

3

yerine kontrol için birden bağımlılık özelliklerini belirleme 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

Bunun nasıl yapılacağına dair bir örnek harika olurdu – SoaperGEM

+0

Umarım size yardımcı olur –

+1

Projenizin as-is yapması gerektiğine inanıyorum. Eğer mülkiyet bağlayıcı bir hedef olacaksa, sadece bir bağımlılık malına ihtiyacınız var. Hemen şimdi benzer bir senaryoyu test ettim ve sorunuzda gösterildiği gibi oluşturuyor. Çok kullanışlı değil ... ama inşa ediyor. VS kurduktan sonra makinemden şikayet ediyor. – Sam

-1

olarak mal beyanında gerekir, ben yansıma kullanmak.

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

Visual Studio 2017

Ben tam olarak aynı problem vardı. Bir gün derliyordu ... ve sonra değildi. Yukarıdaki gibi gerekli olmayan DependencyProperty kullanmıyordum. Özellikler Intellisense'de gözüküyordu ancak takıldığında aynı mesajı verdi. Temizledim, inşa ettim, yeniden inşa ettim, VS yeniden başlattım, yeniden başlatıldı vb. Hiçbiri boşuna.

Son hendek deneyin ... Tüm rahatsız edici öznitelikleri kaldırdım ve temiz bir derleme aldım. Sonra onları geri koydum ve derledim. Bunu gerçekten beklemiyordum. Her nasılsa VS, knickers'ı bir twistte kazanmıştı.

+1

Yeniden oluşturma projesi işe yaramadıysa. Platform'u AnyPC'den x86 veya x64'e değiştirmeyi deneyin. Bu sorunu çözecektir. –

+0

Aynı şey burada olduğu gibi, @SonnyD dedi. Açıklanamaz ama işe yarıyor. –

0

Yapı hedefini AnyCPU'dan x86 veya x64'e değiştirin. AnyCPU'nun neden çalışmadığından emin değilsiniz.

+1

Haklısınız. Yukarıda belirtildiği gibi benzer bir sorun yaşadım. VS yeniden başlatma, yeniden oluşturma yardımcı olmadı. Platformu AnyCPU'dan diğerine değiştirmek sorunu çözer. –

+0

Yep. İşe yarıyor... –

-1

Benim durumumda, sınıfımda bir değişiklik yaptıktan sonra, sınıfımda bir hata oluştu, çünkü benim sınıfımda bazı hatalar var, o zaman Xaml Hatası member is not recognized gösterisi. Sınıfımdaki hataları çözdükten sonra, projeleri inşa etmekten geçiyorum, tüm projeler hatasız oluşturuldu, ancak hatalar hala Error List Window'da gösteriliyor. Sonunda, Visual Studio'yu yeniden başlatırım, hatalar kayboluyor.

İlgili konular