单击TextBox中的“清除所有按钮”时,绑定的ViewModel属性不会更新

时间:2015-11-18 19:05:38

标签: mvvm windows-runtime winrt-xaml

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

当用户在TextBox中输入时,一切正常,但是,有一个'clear all button',它看起来像TextBox右侧的粗体'X'。这是一个很好的功能;单击它会清除TextBox的值。

但是,单击此按钮时,ViewModel中属性的TwoWay绑定不会像用户在TextBox中键入时那样更新。有没有办法可以强制绑定值更新? ViewModel属性驱动图形,因此当它们未更新时,图形不会正确更新。

以下是其中一个TextBox的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();
        }
    }

更新:有趣的是,此问题只发生在第一次时单击“清除所有按钮”。如果您点击按钮,然后输入一个值,当您键入值时图表会更新,然后如果再次点击按钮,图表会从此更新。

0 个答案:

没有答案