我正在定制MarkupExtension
其中我需要来自 XAML 的非字符串参数来构造新对象。是否可以在字段上使用非字符串参数绑定DataContext
scope?
换句话说,我怎样才能做这样的事情呢?
<ListBox ItemsSource="{Binding Source={local:MyMarkupExtension {x:Type Button},IncludeMethods={Binding Source=CustomerObject.IsProblematic}}}" />
where IncludeMethods=CustomerObject.IsProblematic
给我这个错误:
无法在“TypeDescriptorExtension”类型的“IncludeMethods”属性上设置绑定。 “绑定”只能在 DependencyObject 的 DependencyProperty 上设置。
谁能帮我?
thanks
“绑定”只能在 DependencyObject 的 DependencyProperty 上设置 - 这是真的。问题是MarkupExtension
类不是派生自DependencyObject
,这就是为什么无法对其属性设置绑定的原因。
[EDIT]
解决方法是使用价值转换器。另一种解决方法是更改 C# 语言以允许多重继承。顺便说一下,在 Silverlight 中MarkupExtension
实施IMarkupExtension
接口,所以我尝试在我的自定义扩展中实现它并从中派生DependecyObject
, added DependencyProperty
在那里并设置绑定到它。它不会崩溃,但绑定实际上已设置after调用 ProvideValue()。因此,即使在 Silverlight 中也没有解决方案(或者很难 - 请参阅中提供的链接)克劳斯78的回答)。在 WPF 中,MarkupExtension 不实现任何接口,因此您无法绑定到它的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)