我无法将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?
答案 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));