0

既存のBindingクラスを使用して、次のように記述できます。

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

したがって、何でもEmail として記述できます。妥当性検査Binding自体はありません。BindingMoreから派生したクラスを書き始めたBindingので、最終的には、

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

を検証するためにトリガーされるものはどこSomeMethodにありますICommandか。それが私の目的であり、まだそれを書いていません。 delegateEmail

今のところ、このコードだけを書いています。

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 から次のエラー メッセージが表示されます (完全にビルドされて実行された場合でも (2 番目のケース))。

タイプ「local:BindingMore」はマークアップ拡張機能のように使用されますが、MarkupExtension から派生しません。

4

1 に答える 1

3

カスタムMarkup Extensionsは ではサポートされていませんSilverlightAttached Propertyアプローチまたはを使用してみてくださいBehavior

于 2011-01-19T06:32:05.477 に答える