简体   繁体   中英

WPF TextBox lostFocus event trigger

I am new to WPF, In my mainWindow I have multiple TextBox, so whenever a user enters different inputs in these textbox I want to implement those changes in the code behind, as soon as user leaves the focus of the textbox.

For example, my textBox looks like this:

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

I am not looking to do any kind of input validation. What I want is to trigger some calculations or call a function whenever the TextBox leaves focus after contents of TextBox is updated.

You can write an EventHandler

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

and in the xaml.cs

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

If you just want it to do stuff when the textbox content changes you can try something like this:

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

and in the 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;
    }

All you need to do is to bind to TextBox.Text

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

Where MyProperty is some property in your code-behind. This is because TextBox.Text updates on lost focus (UpdateSourceTrigger=LostFocus by default.) You can learn more here: https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-control-when-the-textbox-text-updates-the-source

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM