У нас есть пользовательский элемент управления WPF с несколькими TextBox
.Каждое TextBox
имеет свое свойство Text
, связанное со свойством зависимостей в нашем пользовательском элементе управления (используя шаблон generic.xaml
).Мы хотели бы изменить значение, введенное в TextBox
внутри нашего пользовательского элемента управления, если предоставленные данные неверны.Мы знаем, что можем использовать проверку для принятия или отклонения значения, но это не будет соответствовать нашим потребностям, поскольку мы просто хотим немного изменить значение.
Например, если пользователь вводит 11
в конкретном TextBox
мы хотим обновить его до 2011
.Или мы хотим использовать значение одного из TextBox
с заглавной буквы независимо от того, что вводит пользователь.
Мы не можем найти подходящий механизм свойства зависимостей WPF, который бы выполнял это чисто.Мы попробовали CooerceCallback, но он не обновит TextBox
, который инициировал изменение свойства зависимостей.Другие элементы управления, связанные с этим свойством зависимости, получат измененное значение, но не вызывающий объект.
Одна из идей, которую мы использовали, заключалась в том, чтобы изменить рекомендованный по умолчанию «шаблон свойства», чтобы он делал больше, чем просто SetValue(property, value)
.Таким образом, пример будет:
public string Year
{ get { return (string)GetValue(YearProperty);}
{ set {
var newVal = UpdateValue(value);
SetValue(YearProperty, newVal);
}
}
Но это не работает, так как привязка со свойствами зависимости НЕ будет использовать базовое свойство .Net, но будет использовать SetValue () напрямую.
Если я не сделалперепутал всех с этим вопросом, буду признателен за любую помощь.
С уважением,
Эрик.
PS: Мы используем .Net 3.5 SP1