【问题标题】:Deriving from Binding class (Silverlight 4.0)派生自 Binding 类 (Silverlight 4.0)
【发布时间】: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 是一些 ICommanddelegate 将被触发以验证 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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多