Используя существующий класс 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}"/>
Работает нормально.Кто-нибудь может сказать мне, почему в первом случае выдается ошибка времени выполнения?
К сожалению, ошибка не отображается.Все, что он показывает, это:
Кроме того, я получаю следующее сообщение об ошибке из XAML (даже когда он отлично собирается и работает (во втором случае)):
Тип local: BindingMore используется как расширение разметки, но не является производным от MarkupExtension.