Mvvm 单击文本框中的“全部清除”按钮时绑定的ViewModel属性未更新

Mvvm 单击文本框中的“全部清除”按钮时绑定的ViewModel属性未更新,mvvm,windows-runtime,winrt-xaml,Mvvm,Windows Runtime,Winrt Xaml,我有一个WinRT应用程序(目标是8.1+),在我的一个页面上,我有几个文本框。在这些文本框中,我有GotFocus、LostFocus、KeyUp、KeyDown和TextChanged的处理程序,所有这些处理程序都执行各种操作,包括调用另一个方法,该方法根据文本框中的值绘制图形 当用户在文本框中键入时,这一切都可以正常工作,但是,文本框右侧有一个“全部清除”按钮,看起来像一个粗体的“X”。这是一个很好的特点;单击它将清除文本框的值 但是,单击此按钮时,值与ViewModel中属性的双向绑定不

我有一个WinRT应用程序(目标是8.1+),在我的一个页面上,我有几个文本框。在这些文本框中,我有GotFocus、LostFocus、KeyUp、KeyDown和TextChanged的处理程序,所有这些处理程序都执行各种操作,包括调用另一个方法,该方法根据文本框中的值绘制图形

当用户在文本框中键入时,这一切都可以正常工作,但是,文本框右侧有一个“全部清除”按钮,看起来像一个粗体的“X”。这是一个很好的特点;单击它将清除文本框的值

但是,单击此按钮时,值与ViewModel中属性的双向绑定不会像用户在文本框中键入时那样更新。有没有办法强制更新绑定值?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\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();
        }
    }