C# 使用标记扩展名作为XAML中属性Setter的值。{0}对于Setter.Value无效。唯一受支持的MarkupExtension类型是
下面是一个非常小的示例,说明如何获取此C# 使用标记扩展名作为XAML中属性Setter的值。{0}对于Setter.Value无效。唯一受支持的MarkupExtension类型是,c#,wpf,xaml,markup-extensions,C#,Wpf,Xaml,Markup Extensions,下面是一个非常小的示例,说明如何获取此异常。这已经是一个众所周知的问题(7年多了!)。已经有解决办法了吗 例外情况 FooExtension对Setter.Value无效。 唯一受支持的MarkupExtension类型是 DynamicResourceExtension和BindingBase或派生类型 C级 这不是我使用的原始类/标记扩展,但是逻辑(returnsolidcolorbush)是相同的,它给出了完全相同的错误/行为 设计时的异常 重新生成解决方案后设计器中出现异常 运行时没
异常。这已经是一个众所周知的问题(7年多了!)。已经有解决办法了吗
例外情况
FooExtension对Setter.Value无效。
唯一受支持的MarkupExtension类型是
DynamicResourceExtension和BindingBase或派生类型
C级
这不是我使用的原始类/标记扩展,但是逻辑(returnsolidcolorbush
)是相同的,它给出了完全相同的错误/行为
- 设计时的异常
- 重新生成解决方案后设计器中出现异常
- 运行时没有问题
XAML使用
分机
工作到昨天已经一年多了!包括所有Windows、VisualStudio或任何其他更新!现在,从第一天开始,我在设计阶段就出现了这种错误行为
即时通讯使用:
- VS15.7.3
- .NET Framework 4.7.02556
资料来源:
绑定解决方案(不起作用)
在某些页面上,据说应该使用绑定
。但在那里我得到了同样的错误/行为
顺便说一句,我在情节提要中使用了这个标记扩展,所以无论如何我不能返回绑定
public override object ProvideValue(IServiceProvider serviceProvider)
{
Binding binding = new Binding();
binding.Source = new SolidColorBrush((Color)ColorConverter.ConvertFromString(Key));
return binding.ProvideValue(serviceProvider);
}
我解决了这个问题!我是一种XAML资源
关系。我在App.xaml
中定义了ResourceDictionary
,它已经在AssemblyInfo.cs
中定义为xmlnsrefix
/XmlnsDefinition
Background="{extensions:Foo Key=#FFF37C21}"
public override object ProvideValue(IServiceProvider serviceProvider)
{
Binding binding = new Binding();
binding.Source = new SolidColorBrush((Color)ColorConverter.ConvertFromString(Key));
return binding.ProvideValue(serviceProvider);
}