Ниже приведен очень маленький пример, как получить это exception
. Это уже известная проблема (уже более 7 лет!). Уже есть решение для этого?
Исключение
FooExtension недопустимо для Setter.Value.
Поддерживаются только типы MarkupExtension
DynamicResourceExtension и BindingBase или производные типы.
C # Класс
public class FooExtension : MarkupExtension
{
public string Key { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return new SolidColorBrush((Color)ColorConverter.ConvertFromString(Key));
}
}
Это не оригинальный класс / MarkupExtension, который я использую, но логика (возвращаемая SolidColorBrush
) идентична, и это дает точно такую же ошибку / поведение.
- Исключение во время проектирования
- Исключение в конструкторе после решения по перестройке
- Нет проблем во время выполнения
Использование XAML
Background="{extensions:Foo Key=#FFF37C21}"
extension
работал до вчерашнего дня более 1 года! Включая каждое Windows, VisualStudio или любое другое обновление! И вот с 1 дня я получил эту ошибку во время проектирования!
Я использую:
- VS15.7.3
- .NET Framework 4.7.02556
Источники:
Обязательное решение (не работает)
На некоторых страницах сказано, что вы должны использовать binding
. Но там я получил ту же ошибку / поведение!
кстати. Я использую это расширение разметки в Storyboard
, поэтому я все равно не могу вернуть binding
.
public override object ProvideValue(IServiceProvider serviceProvider)
{
Binding binding = new Binding();
binding.Source = new SolidColorBrush((Color)ColorConverter.ConvertFromString(Key));
return binding.ProvideValue(serviceProvider);
}