Привязанное свойство ViewModel не обновляется при нажатии кнопки "Очистить все" в TextBox
У меня есть приложение WinRT (с таргетингом на 8.1+), и на одной из моих страниц у меня есть несколько TextBox. В этих текстовых полях у меня есть обработчики для GotFocus, LostFocus, KeyUp, KeyDown и TextChanged, которые выполняют различные функции, включая вызов другого метода, который рисует график на основе значений в текстовых полях.
Все это прекрасно работает, когда пользователь печатает в TextBoxes, однако есть кнопка "Очистить все", которая выглядит как жирный "X" на правой стороне TextBox. Это хорошая особенность; щелчок по нему очищает значение TextBox.
Однако при нажатии этой кнопки привязка TwoWay значения к свойству в ViewModel не обновляется, как это происходит при вводе пользователем в TextBox. Есть ли способ заставить привязанное значение обновить? Свойства ViewModel управляют графиком, поэтому, когда они не обновляются, график не обновляется должным образом.
Вот XAML для одного из текстовых полей:
<TextBox
x:Name="y"
Text="{Binding YString,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Row="0"
Grid.Column="1"
Style="{StaticResource StatisticalPoint}"
InputScope="CurrencyAmountAndSymbol"
KeyDown="StatisticalValue_KeyDown"
KeyUp="StatisticalValue_KeyUp"
GotFocus="TextBox_GotFocus"
LostFocus="TextBox_LostFocus"
TextChanged="TextBox_TextChanged"
/>
Вот реализация TextBox_TextChanged:
protected void TextBox_TextChanged( object sender, TextChangedEventArgs e )
{
if( sender is TextBox && ( (TextBox)sender ).Text.Length == 0 )
{
Debug.WriteLine("Value_Changed -- sender: {0}, e: {1}", sender, e);
this.UpdateGraph();
}
}
Обновление. Интересно, что эта проблема возникает только при первом нажатии кнопки "Очистить все". Если вы нажмете кнопку, затем введите значение, график обновится при вводе значения, а затем, если вы нажмете кнопку еще раз, график обновится правильно с тех пор.