Неверный ContentPropertyAttribute для свойства 'Text' - PullRequest
1 голос
/ 25 июня 2009

У меня проблемы с установкой моего ContentProperty на "Текст". Ошибка, которую мне дают:

Недопустимый атрибут ContentPropertyAttribute для типа «MyType», свойство «Text» не найдено.

Код выглядит следующим образом:

[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 ]

4 голосов
/ 25 июня 2009

Я думал, что так будет, потому что typeof (LinkText) должен быть typeof (MyType), но я смог заставить мой тестовый проект компилироваться. Не могли бы вы опубликовать файл XAML, который вызывает ошибку?

РЕДАКТИРОВАТЬ: продолжение

Ваша проблема в двух статических методах, которые вы используете в своем примере кода. Попробуйте удалить их, и он должен скомпилироваться и работать. Статические методы работают только с прикрепленными свойствами, но не со свойствами зависимости.

1 голос
/ 25 июня 2009

Ошибка исходит из вашего значения по умолчанию, установленного в:

... new PropertyMetadata(false) ...

Поскольку TextProperty имеет тип string, он ожидает строку для значения по умолчанию. Попробуйте:

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register(
        "Text",
        typeof (string),
        typeof(MyType), 
        new PropertyMetadata(String.Empty));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...