Свойство зависимости пользовательского элемента управления WPF: тип строки не может быть? - PullRequest
2 голосов
/ 09 октября 2011

Я пытаюсь добавить DependencyProperty в пользовательский элемент управления WPF.

Все в порядке, пока я не сохраню код, сгенерированный фрагментом propdp:

namespace CustomControl
{

    public partial class MainControl
    {
        public string MyProperty
        {
            get { return (string)GetValue(MyPropertyProperty); }
            set { SetValue(MyPropertyProperty, value); }
        }

        // Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
            DependencyProperty.Register("MyProperty", typeof(string), typeof(MainControl), new UIPropertyMetadata(0));

        public MainControl()
        {
            this.InitializeComponent();
        }
    }
}

Но каккак только я меняю тип с «int» на «string», я получаю ошибку во время выполнения, которая говорит: «Невозможно создать экземпляр MainControl, определенный в сборке CustomControl и т. д. ...

Затем я возвращаюсь квведите "int", и все снова запустится правильно.

У кого-нибудь есть подсказка, чтобы исправить эту загадку?

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Я думаю, что проблема заключается здесь:

new UIPropertyMetadata(0)

Вы говорите, что свойство имеет тип string, но его значением по умолчанию является int 0. Либо измените его на строковое значение, которое вы хотите использовать по умолчанию (null, string.Empty или что-то еще), или полностью удалите этот параметр - это необязательно.

2 голосов
/ 09 октября 2011

Вам необходимо изменить значение по умолчанию на null, а не 0, что является недопустимым значением для строки:

new UIPropertyMetadata(null)

(или любое другое строковое значение, которое вы хотите использовать по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...