WPF TextBox lostFocus事件触发器

时间:2017-12-18 11:58:19

标签: wpf

我是WPF的新手, 在我的mainWindow中,我有多个TextBox,因此每当用户在这些文本框中输入不同的输入时,我想在用户离开文本框的焦点后立即在后面的代码中实现这些更改。

例如,我的textBox如下所示:

<TextBox Name="SpiralAngleTextBox"
              Grid.Column="1" Grid.Row="4"
              Margin="5,5,5,5" SelectedText="0"/>

我不打算做任何类型的输入验证。我想要的是在TextBox的内容更新后TextBox离开焦点时触发一些计算或调用函数。

2 个答案:

答案 0 :(得分:0)

您可以编写EventHandler

    <TextBox Name="SpiralAngleTextBox"
      Grid.Column="1" Grid.Row="4"
      Margin="5,5,5,5" SelectedText="0" LostFocus="SpiralAngleTextBox_LostFocus"/>

和xaml.cs

    private void SpiralAngleTextBox_LostFocus(object sender, RoutedEventArgs e)
    {
        foo();
    }

如果您只是希望它在文本框内容发生变化时执行操作,您可以尝试这样的操作:

            <TextBox Name="SpiralAngleTextBox"
              Grid.Column="1" Grid.Row="4"
              Margin="5,5,5,5" SelectedText="0" LostFocus="SpiralAngleTextBox_LostFocus" 
TextChanged="SpiralAngleTextBox_TextChanged"/>

和xaml.cs

       bool hasChanged;

    private void SpiralAngleTextBox_LostFocus(object sender, RoutedEventArgs e)
    {
        if(hasChanged)
            foo();

        hasChanged = false;
    }

    private void SpiralAngleTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        hasChanged = true;
    }

答案 1 :(得分:0)

您需要做的就是绑定到TextBox.Text

  <TextBox Text="{Binding MyProperty}" />

MyProperty是代码隐藏中的某些属性。这是因为TextBox.Text会更新丢失的焦点(默认情况下为UpdateSourceTrigger = LostFocus。)您可以在此处了解更多信息:https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-control-when-the-textbox-text-updates-the-source