【发布时间】:2011-06-11 13:37:03
【问题描述】:
使用现有的Binding类,我们可以编写,
<TextBox Text="{Binding Email, Mode=TwoWay}"/>
所以我们可以将anything写成Email; Binding 本身没有有效性检查。我开始编写一个源自Binding 的类BindingMore,以便最终我可以编写,
<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}"/>
一切正常。谁能告诉我为什么它在第一种情况下会出现运行时错误?
很遗憾,错误未显示。它显示的只是:
此外,我从 XAML 收到以下错误消息(即使它完美构建并运行(在第二种情况下)):
Type 'local:BindingMore' 的使用方式如下 标记扩展,但不派生 来自 MarkupExtension。
【问题讨论】:
标签: wpf silverlight silverlight-4.0 binding markup-extensions