Mvvm 单击文本框中的“全部清除”按钮时绑定的ViewModel属性未更新
我有一个WinRT应用程序(目标是8.1+),在我的一个页面上,我有几个文本框。在这些文本框中,我有GotFocus、LostFocus、KeyUp、KeyDown和TextChanged的处理程序,所有这些处理程序都执行各种操作,包括调用另一个方法,该方法根据文本框中的值绘制图形 当用户在文本框中键入时,这一切都可以正常工作,但是,文本框右侧有一个“全部清除”按钮,看起来像一个粗体的“X”。这是一个很好的特点;单击它将清除文本框的值 但是,单击此按钮时,值与ViewModel中属性的双向绑定不会像用户在文本框中键入时那样更新。有没有办法强制更新绑定值?ViewModel属性驱动图形,因此当它们未更新时,图形不会正确更新 以下是其中一个文本框的XAML:Mvvm 单击文本框中的“全部清除”按钮时绑定的ViewModel属性未更新,mvvm,windows-runtime,winrt-xaml,Mvvm,Windows Runtime,Winrt Xaml,我有一个WinRT应用程序(目标是8.1+),在我的一个页面上,我有几个文本框。在这些文本框中,我有GotFocus、LostFocus、KeyUp、KeyDown和TextChanged的处理程序,所有这些处理程序都执行各种操作,包括调用另一个方法,该方法根据文本框中的值绘制图形 当用户在文本框中键入时,这一切都可以正常工作,但是,文本框右侧有一个“全部清除”按钮,看起来像一个粗体的“X”。这是一个很好的特点;单击它将清除文本框的值 但是,单击此按钮时,值与ViewModel中属性的双向绑定不
<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\u TextChanged中,我可以手动将YString属性更新为
((TextBox)sender)。Text
。。。但这并不完全令人满意,因为我觉得应该有一种自动的、MVVM风格的方式来让它正常工作。嗯,这是一种奇怪的方式。你能把代码贴到“全部清除”按钮上吗?@Kennyyland这的确是一只奇怪的鸟。“x”(全部清除)按钮内置于控件中。点击control-f,搜索“全部清除”。我看到,似乎没有办法为它设置ICommand。如果我错了,请纠正我。你能提供一个小的工作示例来演示这个问题吗?你会在YString的setter上调用PropertyChange吗?
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();
}
}