WPF TextBox lostFocus事件触发器
问题描述:
我是WPF的新手, 在我的主窗口中我有多个TextBox,因此每当用户在这些文本框中输入不同的输入时,我想在后面的代码中实现这些更改,只要用户离开文本框的焦点。WPF TextBox lostFocus事件触发器
例如,我的textBox看起来是这样的:
<TextBox Name="SpiralAngleTextBox"
Grid.Column="1" Grid.Row="4"
Margin="5,5,5,5" SelectedText="0"/>
我不希望做任何类型的输入验证。我想要的是在TextBox的内容更新后,只要TextBox离开焦点,就触发一些计算或调用函数。
答
你可以写一个事件处理程序
<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"/>
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;
}
答
所有你需要做的是绑定到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
使用绑定。你会立即得到所需的功能 – ASh
的任何例子?我可以找到的所有示例都使用MVVM,而我没有使用任何类型的东西。 –
你可以调用文本框的LostFocus事件,并使用“TextBoxName.Text”获得内容,并使用你的目的的内容.... –