【发布时间】:2018-07-05 11:33:07
【问题描述】:
下面是一个很小的例子,如何获得这个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 工作到昨天已经一年多了!包括每个 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);
}
【问题讨论】:
标签: c# wpf xaml markup-extensions