使用现有的Binding
类,我们可以写,
<TextBox Text="{Binding Email, Mode=TwoWay}"/>
所以我们可以将任何写成电子邮件; Binding
本身没有进行有效性检查。我开始编写一个源自BindingMore
的课程Binding
,这样我最终可以编写,
<TextBox Text="{local:BindingMore Email, Validate=SomeMethod, Mode=TwoWay}"/>
其中SomeMethod
是某些ICommand
或delegate
,会触发这些Email
或public class BindingMore : System.Windows.Data.Binding
{
public BindingMore() : base()
{
}
public BindingMore(string path) : base(path)
{
}
}
验证BindingMore
。这是我的目标,我还没写过。
截至目前,我已经编写了这段代码,
Binding
所以,在这个阶段, <TextBox Text="{local:BindingMore Email, Mode=TwoWay}"/>
完全等同于 <TextBox Text="{local:BindingMore Path=Email, Mode=TwoWay}"/>
,但是当我写
{{1}}
它给了我运行时错误。但是当我写作时,
{{1}}
工作正常。任何人都可以告诉我为什么它会在第一种情况下给出运行时错误吗?
不幸的是,错误未显示。它显示的是:
此外,我从XAML收到以下错误消息(即使它完美构建并运行(在第二种情况下)):
使用类型'local:BindingMore' 标记扩展但不派生 来自MarkupExtension。
答案 0 :(得分:3)
Markup Extensions
不支持自定义Silverlight
。尝试使用Attached Property
方法或Behavior
。