изменение значения свойства зависимости в WPF - PullRequest
0 голосов
/ 03 ноября 2011

У нас есть пользовательский элемент управления 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

1 Ответ

0 голосов
/ 03 ноября 2011

Как указывает @ CodeNaked , это похоже на Проблемы привязки принудительного свойства зависимостей и исправлено в .Net 4.0. Между тем, для .Net 3.5 SP1 мы принудительно обновляем привязку для элемента, вызвавшего событие изменения (в нашем случае, TextBox). Надеюсь, это поможет.

С уважением,

Эрик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...