MarkupExtension: изменение аргумента конструктора не оценивается во время разработки

Вот как это выглядит:

При изменении расширения разметки Key собственность - все работает.

При изменении аргумента конструктора расширения разметки - он не обновляется. Обходной путь - обновить свойство с расширением (изменить Text) а потом обратно. Тогда значение оценивается правильно.

Вот расширение:

public class MyExtension : MarkupExtension
{
    public string Key { get; set; }

    public MyExtension() { }

    public MyExtension(string key)
    {
        Key = key;
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Key;
    }
}

Есть идеи, как заставить дизайнера работать с аргументом конструктора так же, как со свойством?

0 ответов

Кажется, что исправить эту ситуацию, так это использование ConstructorArgumentAttribute вот так:

public class MyExtension : MarkupExtension
{
    [ConstructorArgument("key")]
    public string Key { get; set; }

    public MyExtension() { }

    public MyExtension(string key)
    {
        Key = key;
    }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Key;
    }
}
Другие вопросы по тегам