Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用标记扩展名作为XAML中属性Setter的值。{0}对于Setter.Value无效。唯一受支持的MarkupExtension类型是_C#_Wpf_Xaml_Markup Extensions - Fatal编程技术网

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级 这不是我使用的原始类/标记扩展,但是逻辑(return
solidcolorbush
)是相同的,它给出了完全相同的错误/行为

  • 设计时的异常
  • 重新生成解决方案后设计器中出现异常
  • 运行时没有问题
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);
    }