在两个文本框中使用 SelectionChanged 事件,一个依赖于另一个

Use SelectionChanged event in two textbox , one depend from the other

我有两个文本框,我正在尝试向两个文本框添加 SelectionChanged 事件 :

TextBox A => Amount
TextBox B => Summary

场景是这样的:

两个文本框为空:

我该怎么做?

我相信有一个简单的解决方案:

private bool _isEditing;

private void Amount_TextChanged(object _, RoutedEventArgs __)
{
    if (_isEditing)
        return;

    _isEditing = true;

    if (double.TryParse(Amount.Text, out double amount)
        Summary.Text = (amount * 100).ToString();
    else
        Summary.Clear();

    _isEditing = false;
}

private void Summary_TextChanged(object _, RoutedEventArgs __)
{
    if (_isEditing)
        return;

    _isEditing = true;

    if (double.TryParse(Summary.Text, out double summary)
        Amount.Text = (summary / 100).ToString();
    else
        Amount.Clear();

    _isEditing = false;
}

备注:

  • 我将“SelectionChanged”更改为“TextChanged”,因为如果用户更改了 TextBox 中的值,这是您要观看的事件。
  • 我用 double.TryParse() 替换了 ToDecimalValue(),但这只有在小数点分隔符与应用程序的当前区域性相匹配时才有效。
  • ___表示没有使用参数。
  • 如果您希望 TextBox 仅接受数字,请参阅 this question