wake-up-neo.net

Warum sehe ich in meiner WPF User Control einen Fehler "Mitglied wird nicht erkannt oder ist nicht erreichbar"

Ich habe ein benutzerdefiniertes Benutzersteuerelement mit einer öffentlichen Eigenschaft, die ich in XAML festlegen möchte. Hier ist es unten.

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

Dann versuche ich in meine MainWindow.xaml-Datei Folgendes aufzunehmen:

<controls:TestControl TestMe="asdf" />

Obwohl die TestMe-Eigenschaft von Visual Studio automatisch vervollständigt wird, sehe ich jedoch Dinge mit einer unterstrichenen Unterstreichung, die besagt: "Das Mitglied" Test Me "wird nicht erkannt oder ist nicht zugänglich", wie unten gezeigt.

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

Ich hätte schwören können, dass ich so etwas schon in anderen Projekten gemacht habe. Wie kann ich über XAML auf diese Weise auf die öffentlichen Eigenschaften zugreifen (d. H. Festlegen)?

14
Gordon Myers

Sie müssen Ihr Eigentum als Dependency Properties deklarieren.

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

Visual Studio 2017

Ich hatte genau das gleiche Problem. Es wurde eines Tages kompiliert ... und dann nicht. Ich habe keine DependencyProperty verwendet, die wie oben nicht benötigt werden sollte. Die Eigenschaften wurden in Intellisense angezeigt, gaben jedoch beim Einfügen dieselbe Meldung. Ich habe gesäubert, gebaut, neu aufgebaut, VS neu gestartet, neu gestartet usw. Alles ohne Erfolg.

Letzter Versuch ... Ich habe alle beleidigenden Attribute entfernt und ein sauberes Kompilieren erhalten. Dann steckte ich sie zurück und es wurde zusammengestellt. Das habe ich wirklich nicht erwartet. Irgendwie hatte VS seine Schlüpfer in einer Wendung bekommen.

17
Paulustrious

Ändern Sie das Build-Ziel von AnyCPU in x86 oder x64. Unsicher, warum AnyCPU nicht funktioniert.

4
Gregory

Wenn Sie VS2017 verwenden, versuchen Sie, die Ordner bin und obj in allen Projekten Ihrer Projektmappe zu löschen. Reinigen Sie die Projektmappe und erstellen Sie sie erneut. Für mich geht das !

2
Wajdi Gharsalli

In meinem Fall gibt es ursprünglich keine Fehler, nachdem ich meine Klasse geändert habe, gibt es einige Fehler in meiner Klasse und dann den Xaml-Fehler member is not recognized. Nachdem ich Fehler in meiner Klasse gelöst habe, übergebe ich das Erstellen der Projekte. Alle Projekte werden fehlerfrei erstellt. Die Fehler werden jedoch weiterhin im Error List Window angezeigt. Am Ende starte ich Visual Studio neu und die Fehler verschwinden.

0
yu yang Jian