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;
}
}