WPF自定义用户控件 - "成员X未被识别或无法访问"

6

我有这个自定义控件,但无法从我的主XAML文件访问它的成员。

<UserControl x:Class="FireflyMmwDiagnostics.Controls.RegisterTextBox"
         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">
<Grid>
    <Label Name="LabelRegisterTitle"/>
</Grid>

public partial class RegisterTextBox : UserControl
{
    public RegisterTextBox()
    {
        InitializeComponent();
    }

    public string RegisterTitle
    {
        get { return this.LabelRegisterTitle.Content.ToString(); }
        set { this.LabelRegisterTitle.Content = value; }
    }

这是我在主XAML中遇到的错误,提示“未识别或无法访问成员RegisterTitle”:

<Controls:RegisterTextBox RegisterTitle="This Is A Test"/>

我看了几个YouTube视频,他们就是这样做的,不知道为什么对他们有效。请指教可能出现的问题。谢谢!

2个回答

4

您可能需要进行重建以便让程序看到RegisterTitle

如果这不起作用,请确保您已经在XAML中定义了Controls在您的项目中的位置,否则程序肯定无法看到它!

例如:

<Window xmlns:Controls="clr-namespace:FireflyMmwDiagnostics.Controls.RegisterTextBox">

谢谢,我已经做了。我会尝试上面的建议。 - SYB

3
尝试将您的属性声明为“依赖属性”会有所帮助。以下是一个带有示例代码的链接,可以帮助您解决问题:为什么我的WPF用户控件显示“成员未被识别或不可访问”的错误? 更新:如果没有使用依赖属性,您的代码对我来说可以正常工作,因此请尝试以下几个方法:
  • 在您的控件中,请确保以</UserControl>结尾
  • 更改 Controls:RegisterTextBox 为小写字母'c',即controls:RegisterTextBox

谢谢!可能是我没有正确遵循,所以对我来说它仍然不起作用。我做了正确的更改吗:抱歉,我无法让换行符起作用... - SYB
我刚刚尝试了您的代码,没有使用“依赖属性”,它可以正常工作。只是为了检查,您的用户控件末尾确实有“</UserControl>”吗?另外,请将<Controls:RegisterTextBox RegisterTitle="This Is A Test"/>中的大写'C'更改为小写'c',即<controls:RegisterTextBox RegisterTitle="This Is A Test"/> - Stuart
是的,我在末尾有</UserControl>,只是复制/粘贴时错过了。但出于某种原因,我仍然无法让它正常工作。顺便问一下,如果它封装在namespace FireflyMmwDiagnostics.Controls中,为什么要改成小写的'c'?使用小写'c'编译不通过。 - SYB
即使我在主XAML中将其更改为小写的“c”,仍然没有运气:(xmlns:controls="clr-namespace:FireflyMmwDiagnostics.Controls" <controls:RegisterTextBox RegisterTitle="This Is A Test"/>)...我只能深入挖掘并查看是否还有其他问题。谢谢 - SYB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接