[英]MarkupExtension is not valid for Setter.Value. The only supported MarkupExtension types are DynamicResourceExtension and BindingBase or derived types
[英]Using a Markup Extension as value of property Setter in XAML. {0} is not valid for Setter.Value. The only supported MarkupExtension types are
下面是一個非常小的示例,說明如何獲取此exception
。 這已經是一個已知問題(超過7年!)。 已經有解決方案了嗎?
FooExtension對於Setter.Value無效。 唯一受支持的MarkupExtension類型是
DynamicResourceExtension和BindingBase或派生類型。
public class FooExtension : MarkupExtension
{
public string Key { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return new SolidColorBrush((Color)ColorConverter.ConvertFromString(Key));
}
}
這不是我正在使用的原始類/ MarkupExtension,但是邏輯(返回SolidColorBrush
)是相同的,並且給出了完全相同的錯誤/行為。
Background="{extensions:Foo Key=#FFF37C21}"
該extension
一直工作到昨天超過1年! 包括每個Windows,VisualStudio或任何其他更新! 現在從1天開始,我在設計期間就收到了這個錯誤行為!
我正在使用:
資料來源:
在某些頁面上,據說您應該使用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);
}
我解決了問題! 我是一種XAML Resources
關系。 我定義的ResourceDictionary
內App.xaml
這是已經在規定AssemblyInfo.cs
為XmlnsPrefix
/ XmlnsDefinition
!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.