为什么我看到"会员未被识别或无法访问"我的WPF用户控件出错?

时间:2015-05-08 22:32:29

标签: c# wpf xaml

我有一个自定义用户控件,其中包含我希望能够在XAML中设置的公共属性。它在下面。

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" />

然而,即使Visual Studio自动填充了TestMe属性,我也会看到一些带有波浪线下划线的内容,上面写着&#34;会员&#34;测试我&#34;无法识别或无法访问,&#34;如下所示。

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

我可以发誓我之前在其他项目中做过类似的事情。如何通过XAML访问(即设置)公共属性?

7 个答案:

答案 0 :(得分:18)

Visual Studio 2017

我有完全相同的问题。它正在编译一天......然后它就没有了。我没有使用DependencyProperty,这不应该如上所述。属性出现在Intellisense中,但在插入时给出相同的消息。我清理,建造,重建,重新启动VS,重新启动等等都无济于事。

最后的尝试...我删除了所有违规的属性并得到了一个干净的编译。然后我把它们放回去编译。我真的没想到。不知怎的,VS已经扭曲了。

答案 1 :(得分:6)

您需要将您的媒体资源声明为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();
        }
    }
}

答案 2 :(得分:5)

将构建目标从AnyCPU更改为x86或x64。不确定为什么AnyCPU不起作用。

答案 3 :(得分:2)

如果使用的是VS2017,请尝试删除解决方案所有项目中的bin和obj文件夹,清理解决方案并重新生成。它对我有用!

答案 4 :(得分:1)

我知道这已经很晚了,但是我只是在VS 2020上遇到了这个问题。

我尝试了上面列出的所有3个选项,但包括CPU内部版本在内,它们均无效。

enter image description here

我最终不得不右键单击每个项目,清理并重建。然后它解决了这个问题...

真的很烦这还是一个问题。

答案 5 :(得分:0)

在我的情况下,最初没有错误,在修改我的课程后,我的课程中出现了一些错误,然后是Xaml错误member is not recognized。在我的课程中解决错误之后,我通过构建项目,所有项目都构建没有错误,但错误仍显示在Error List Window。最后,我重新启动Visual Studio,错误消失了。

答案 6 :(得分:-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); }
   }