需要将多个文本框的 TextBox_LostFocus 的重复代码缩减为一个功能

Repetitive code for TextBox_LostFocus for multiple textboxes need to be cut down to one function

我有一个包含多个文本框的 xaml 页面。对于每个文本框,都有一个 TextBox_LostFocus 事件处理程序,它对文本框的内容进行操作。大多数文本框都是一样的。 我怎样才能整理代码,这样我就不必为所有文本框 LostFocus 事件函数编写相同的代码。

private void TextBox1_LostFocus(object sender, 
                     Windows.UI.Xaml.RoutedEventArgs e)
        {
            if (TextBox1.Text != "")
            {
                feet = FeetConversion(TextBox1.Text.Trim());
                TextBox1.Text = ConvertDecimalToFraction(feet);
            }
        }

private void TextBox2_LostFocus(object sender, 
                     Windows.UI.Xaml.RoutedEventArgs e)
      {
            if (TextBox2.Text != "")
            {
                feet = FeetConversion(TextBox2.Text.Trim());
                TextBox2.Text = ConvertDecimalToFraction(feet);
            }
        }

您可以使所有 TextBox 都使用同一个处理程序方法。然后,您可以在事件处理程序方法中区分不同的文本框并获取它们的文本。

我做了一个简单的代码示例。 XAML 如下所示:

<Grid>
    <StackPanel x:Name="stackpanel">
        <TextBox></TextBox>
        <TextBox></TextBox>
        <TextBox></TextBox>
        <TextBox></TextBox>
        <TextBox></TextBox>
        <TextBox></TextBox>
    </StackPanel>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    foreach (var control in stackpanel.Children)
    {
        if (control is TextBox)
        {
            TextBox textBox = control as TextBox;
            textBox.LostFocus += TextBox_LostFocus;
        }
    }
}

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (textBox != null)
    {
        if (textBox.Text !="")
        {
            feet = FeetConversion(textBox.Text.Trim());
            textBox.Text = ConvertDecimalToFraction(feet);
        }
    }
}