Производные от класса Binding (Silverlight 4.0) - PullRequest
0 голосов
/ 19 января 2011

Используя существующий класс Binding, мы можем написать

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

Таким образом, мы можем написать что угодно как Email;проверка 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}"/>

Работает нормально.Кто-нибудь может сказать мне, почему в первом случае выдается ошибка времени выполнения?

К сожалению, ошибка не отображается.Все, что он показывает, это: alt text

Кроме того, я получаю следующее сообщение об ошибке из XAML (даже когда он отлично собирается и работает (во втором случае)):

Тип local: BindingMore используется как расширение разметки, но не является производным от MarkupExtension.

1 Ответ

3 голосов
/ 19 января 2011

Пользовательский Markup Extensions не поддерживается в Silverlight. Попробуйте использовать Attached Property подход или Behavior.

...