Windows phone 7 如何在WP7用户控制中关闭SIP

Windows phone 7 如何在WP7用户控制中关闭SIP,windows-phone-7,Windows Phone 7,我之前在sip中添加了一个“关闭”按钮,方法是将InputScope设置为Search,处理key up事件,并在输入密钥时调用Focus 我尝试在一个包含textblock和textbox的用户控件中执行相同的操作,但是sip无法关闭 以下是用户控件: XAML 你知道我做错了什么吗?你应该能够通过在一个接受焦点而不是文本框的控件上调用Focus()来实现这一点。如果您还没有其他合适的工具,可以使用使按钮等不可见的工具。您应该能够通过在接受焦点而不是文本框的控件上调用Focus()来实现这一点

我之前在sip中添加了一个“关闭”按钮,方法是将InputScope设置为Search,处理key up事件,并在输入密钥时调用Focus

我尝试在一个包含textblock和textbox的用户控件中执行相同的操作,但是sip无法关闭

以下是用户控件:

XAML


你知道我做错了什么吗?

你应该能够通过在一个接受焦点而不是文本框的控件上调用Focus()来实现这一点。如果您还没有其他合适的工具,可以使用使按钮等不可见的工具。

您应该能够通过在接受焦点而不是文本框的控件上调用Focus()来实现这一点。如果您还没有其他合适的工具,可以使用使按钮等不可见的工具。

这是我在一个
用户控件中关闭SIP时所做的操作:

private static T FindParent<T>( UIElement control ) where T : UIElement
{
  UIElement p = VisualTreeHelper.GetParent( control ) as UIElement;
  if( p != null ) {
    if( p is T ) {
      return p as T;
    } else {
      return FindParent<T>( p );
    }
  }
  return null;
}

// Loaded callback for the UserControl
private void OnUserControlLoaded( object sender, RoutedEventArgs e )
{
  _parentPage = FindParent<PhoneApplicationPage>( this );
}

private void OnTextBoxKeyUp( object sender, KeyEventArgs e )
{
  if( e.Key == Key.Enter ) {
    if( _parentPage != null ) {
      _parentPage.Focus();
    }
  }
}
私有静态T FindParent(UIElement控件),其中T:UIElement
{
UIElement p=VisualTreeHelper.GetParent(控件)作为UIElement;
如果(p!=null){
if(p是T){
返回p作为T;
}否则{
返回FindParent(p);
}
}
返回null;
}
//已加载UserControl的回调
私用无效OnUserControlLoaded(对象发送方,RoutedEventArgs e)
{
_parentPage=FindParent(此);
}
私有void OnTextBoxKeyUp(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Enter){
如果(_parentPage!=null){
_parentPage.Focus();
}
}
}

这是我在一个
用户控件中关闭SIP所做的操作:

private static T FindParent<T>( UIElement control ) where T : UIElement
{
  UIElement p = VisualTreeHelper.GetParent( control ) as UIElement;
  if( p != null ) {
    if( p is T ) {
      return p as T;
    } else {
      return FindParent<T>( p );
    }
  }
  return null;
}

// Loaded callback for the UserControl
private void OnUserControlLoaded( object sender, RoutedEventArgs e )
{
  _parentPage = FindParent<PhoneApplicationPage>( this );
}

private void OnTextBoxKeyUp( object sender, KeyEventArgs e )
{
  if( e.Key == Key.Enter ) {
    if( _parentPage != null ) {
      _parentPage.Focus();
    }
  }
}
私有静态T FindParent(UIElement控件),其中T:UIElement
{
UIElement p=VisualTreeHelper.GetParent(控件)作为UIElement;
如果(p!=null){
if(p是T){
返回p作为T;
}否则{
返回FindParent(p);
}
}
返回null;
}
//已加载UserControl的回调
私用无效OnUserControlLoaded(对象发送方,RoutedEventArgs e)
{
_parentPage=FindParent(此);
}
私有void OnTextBoxKeyUp(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Enter){
如果(_parentPage!=null){
_parentPage.Focus();
}
}
}

我将此作为建议发布,因为它似乎是一个经常讨论的话题:我将此作为建议发布,因为它似乎是一个经常讨论的话题:
private static T FindParent<T>( UIElement control ) where T : UIElement
{
  UIElement p = VisualTreeHelper.GetParent( control ) as UIElement;
  if( p != null ) {
    if( p is T ) {
      return p as T;
    } else {
      return FindParent<T>( p );
    }
  }
  return null;
}

// Loaded callback for the UserControl
private void OnUserControlLoaded( object sender, RoutedEventArgs e )
{
  _parentPage = FindParent<PhoneApplicationPage>( this );
}

private void OnTextBoxKeyUp( object sender, KeyEventArgs e )
{
  if( e.Key == Key.Enter ) {
    if( _parentPage != null ) {
      _parentPage.Focus();
    }
  }
}