Я потратил немало времени на то, чтобы попробовать несколько разных способов решить проблему, которая у меня есть, безрезультатно, поэтому я надеюсь, что кто-то здесь может помочь.Доступ к привязке к конвертеру типов?
У меня есть элемент текстового поля с двусторонней привязкой, который использует конвертер типов для преобразования значения из строки в пользовательский тип данных, скажем, MyCustomType
. Это работает отлично, однако из-за изменения требований моего проекта мне теперь нужно выполнить дополнительную обработку до конверсии.
Для выполнения этой дополнительной обработки, однако, мне нужно иметь доступ к текстовому полю «источник» или контексту привязки. Ни один из которых я не смог получить.
Есть ли способ получить доступ к исходному текстовому полю, из метода ConvertFrom()
преобразователя типа?
Я попытался использовать параметр ITypeDescriptorContext
, переданный (WPF) методу ConvertFrom()
, однако большинство свойств в нем равны нулю.
т.е.
public class MyCustomTypeConverter : TypeConverter
{
...
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
// Context is
return new MyCustomType(value);
}
...
}
Я также попытался с помощью MultiValueConverter
и избегать типа преобразователя полностью, однако это привело к LOT дополнительного кода, и не помогло. Я бы предпочел не спускаться по этому маршруту, поскольку Конвертер типов намного более изящный.
Любые консультации/помощь были бы очень признательны! :)
Почему вы хотите получить доступ к связыванию? Может быть, есть какой-то другой способ: – Nitin
Я не считаю возможным доступ к Bindings из TypeConverters. Они должны работать на DataLayer, также кажется, много ненужной работы. Если вы обновите вопрос, в чем проблема, люди могут помочь вам так легко. –
@Nitin, я пытался получить доступ к исходному TextBox, чтобы передать его другому методу (в качестве ссылки), чтобы я мог выполнять определенные задачи при отказе проверки. Это не обязательно лучший способ сделать это, однако требования проекта изменились довольно поздно на стадии разработки, и это функциональное, несколько временное решение. (Это довольно высокий показатель в моем списке вещей для рефакторинга, когда я получаю некоторое время). Спасибо вам за ваши ответы. – XtraSimplicity