Что-то возвращает это значение обратно. Я не слишком много исследовал, но я поставил диагностику привязки (вот как это сделать самостоятельно: здесь ) на вашу привязку и получил это:
Update - got raw value '9800'
Update - using final value '9800'
SetValue at level 1 to Ville (hash=15263193) using RuntimePropertyInfo(CodePostal): '9700'
Got PropertyChanged event from Ville (hash=15263193)
Update - got raw value '97001'
Update - using final value '97001'
SetValue at level 1 to Ville (hash=15263193) using RuntimePropertyInfo(CodePostal): '97001'
Got PropertyChanged event from Ville (hash=15263193)
Update - got raw value '01000'
Update - using final value '01000'
SetValue at level 1 to Ville (hash=15263193) using RuntimePropertyInfo(CodePostal): '01000'
Got PropertyChanged event from Ville (hash=15263193)
Обратите внимание, что как только я набрал последний «1» в 97001, было получено уведомление PropertyChanged, в результате чего его значение вернулось к 01000, поэтому что-то снова стало таким.
Я поставил условную точку останова в методе Set вашего кода для "value.Equals (" 01000 ")" и получил трассировку стека, когда это произошло:
TestMembre.exe!TestMembre.Ville.set_CodePostal(String value = "01000") Line 47 Basic
TestMembre.exe!TestMembre.Window1.txtCodePostal_TextChanged(Object sender = {System.Windows.Controls.TextBox}, System.Windows.Controls.TextChangedEventArgs e = {System.Windows.Controls.TextChangedEventArgs})
Итак, что вы должны заметить, это то, что событие TextChanged в txtCodePostal имеет некоторый код, который устанавливает это значение:
Else
'If the zip code doesn't exist, it is set to one that does
txtCodePostal.Text = "01000"
Я не знаю точно, как ваша логика должна работать, но эта строка кода всегда запускает и сбрасывает ваше значение.
Надеюсь, это поможет!