0

使用现有的Binding类,我们可以编写,

 <TextBox Text="{Binding Email, Mode=TwoWay}"/>

所以我们可以写任何东西作为电子邮件;本身没有有效性检查Binding。我开始写一个BindingMore派生的类,Binding以便最终我可以写,

 <TextBox Text="{local:BindingMore Email, Validate=SomeMethod, Mode=TwoWay}"/>

some or which 将被触发以SomeMethod验证. 这是我的目标,我还没有写出来。 ICommanddelegateEmail

到目前为止,我只写了这段代码,

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 收到以下错误消息(即使它完美构建并运行(在第二种情况下)):

类型 'local:BindingMore' 用作标记扩展,但不是从 MarkupExtension 派生的。

4

1 回答 1

3

Markup Extensions不支持自定义Silverlight。尝试使用Attached Property方法或Behavior.

于 2011-01-19T06:32:05.477 回答