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