属性“文本”上的ContentPropertyAttribute无效

时间:2009-06-25 03:50:48

标签: c# .net wpf

我无法将ContentProperty设置为“Text”。我得到的错误是:

“MyType”类型上的ContentPropertyAttribute无效,找不到属性“文字”。

背后的代码如下所示:

[ContentProperty("Text")]
    public partial class MyType: UserControl
    {
        public MyType()
        {
            InitializeComponent();
        }

        public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text",
                                                                                             typeof (string),
                                                                                             typeof(MyType)));

        public static string GetText(DependencyObject d)
        {
            return (string) d.GetValue(TextProperty);
        }

        public static void SetText(DependencyObject d, string value)
        {
            d.SetValue(TextProperty, value);
        }


        public string Text
        {
            get
            {
                return (string)GetValue(TextProperty);
            }
            set
            {
                SetValue(TextProperty, value);
            }
        }
    }

如果我将CLR属性命名为DependencyProperty以外的其他东西,我实际上已经开始工作 - 我是否错误地使用了DependencyProperties?

2 个答案:

答案 0 :(得分:4)

我认为这是因为typeof(LinkText)应该是typeof(MyType),但我能够让我的测试项目进行编译。你可以发布导致错误的XAML文件吗?

编辑:跟进

您的问题是代码示例中的两种静态方法。尝试删除它们,它应该编译和工作。静态方法仅适用于附加属性,而不适用于依赖属性。

答案 1 :(得分:1)

错误来自您的默认值,设置为:

... new PropertyMetadata(false) ...

因为TextProperty是string类型,所以它需要一个字符串作为默认值。尝试:

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register(
        "Text",
        typeof (string),
        typeof(MyType), 
        new PropertyMetadata(String.Empty));