C# 找出一个文本框正在失去焦点,而另一个控件将被聚焦

C# 找出一个文本框正在失去焦点,而另一个控件将被聚焦,c#,windows-phone-8,textbox,C#,Windows Phone 8,Textbox,所以基本上我有两个文本框:LoginMail和LoginPassword。我正在尝试为它们设置动画: 用户输入LoginEmail#1动画#1开始,用户退出LoginEmail#1动画#2开始 用户输入LoginEmail#1动画#1开始,用户退出LoginEmail#1并转到LoginPassword#2没有动画 代码 它现在不起作用,因为当用户输入LoginMail#1,然后转到LoginPassword#2时,会发生以下事件: LoginEmail_GotFocus(=>FocusA

所以基本上我有两个文本框:LoginMail和LoginPassword。我正在尝试为它们设置动画:

  • 用户输入LoginEmail#1动画#1开始,用户退出LoginEmail#1动画#2开始
  • 用户输入LoginEmail#1动画#1开始,用户退出LoginEmail#1并转到LoginPassword#2没有动画
代码 它现在不起作用,因为当用户输入LoginMail#1,然后转到LoginPassword#2时,会发生以下事件:

  • LoginEmail_GotFocus(=>FocusAnimation.Begin();)
  • LoginEmail_LostFocus(=>UnfocusAnimation.Begin();)
  • LoginPassword_GotFocus(=>FocusAnimation.Begin();)

所以有必要弄清楚用户是从LoginMail转到LoginPassword,而不是显示未聚焦和第二聚焦。不幸的是,我不知道怎么做。

只要按下
键盘上的任何键,您就可以轻松地获得
文本框的焦点,如:

yourtextbox.Focus();
然后,对于失去
焦点
,您可以使用以下方法:

this.Focus();
有关更多信息,请查看这些:


您应该在LoginEmail文本框后检查谁获得焦点。 类似的方法应该会奏效:

private void LoginEmail_LostFocus(object sender, RoutedEventArgs e)
{
      var focusedControl = FocusManager.GetFocusedElement(this);
      if (focusedControl.GetType() != typeof(TextBox) || ((TextBox)focusedControl).Name != "LoginPassword")
      {
           UnfocusAnimation.Begin();            
      }
}

问题还不清楚。代码中的标识符与问题文本中的标识符不匹配(文本框#1,登录密码,…),您还应该提供足够的代码来重现您的问题。确定。抱歉,我刚刚更新了我的问题。您仍然没有提供足够的代码来重现问题…您可以使用任何需要的动画。问题不在于动画,但现在我已经失去了与动画绑定的焦点事件,但有时不应该触发动画。所以我需要一个更好的解决方案来避免当用户从LoginMail中选择LoginPassword时出现动画。不,这不是问题所在。我更新了这个问题,因为它不清楚。
private void LoginEmail_LostFocus(object sender, RoutedEventArgs e)
{
      var focusedControl = FocusManager.GetFocusedElement(this);
      if (focusedControl.GetType() != typeof(TextBox) || ((TextBox)focusedControl).Name != "LoginPassword")
      {
           UnfocusAnimation.Begin();            
      }
}