WP7 / 8使用C#在事件后动态更改InputScope

时间:2012-12-03 19:42:10

标签: c# events microsoft-metro windows-phone inputscope

我正在制作适用于Windows Phone的应用程序,我已经尝试了多年,以便在将方向更改为横向时更改主文本框的InputScope(这样键盘在横向上占用的空间更少)自动更正栏),然后再回来。

我尝试了第二个文本框并将其他文本框隐藏在方向更改上,但这并不能正常工作。 :P

尝试我可能无法使其工作,并且无法在OrientationChangedEvent参数之后找到更改InputScope值的方法,该方法在更改方向的页面元素位置方面效果很好。

我仍然很擅长使用C#和XAML开发应用程序,我希望有一个很好的简单方法来设置我的文本框的InputScope,让你有一个很棒的人可以给我看!

-EDIT:这是事件处理程序,其中的所有内容都可以正常工作,但是我尝试添加任何与InputScope有关的方法都不起作用:(

private void MainPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
    {
        if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
        {
            //Portrait
            PlaceholderText.FontSize = 29.333;
            PlaceholderText.Padding = new Thickness (0,0,0,0);
            MainTweet.FontSize = 29.333;
            MainTweet.Padding = new Thickness (12,8,12,8);
            Counter.Margin = new Thickness (0,212,28,0);
        }
        else
        {
            //Landscape
            PlaceholderText.FontSize = 23;
            PlaceholderText.Padding = new Thickness (8,0,0,0);
            MainTweet.FontSize = 22;
            MainTweet.Padding = new Thickness (16,8,180,0);
            Counter.Margin = new Thickness (0,-18,28,0);
        }
    }

MainTweet.Text是键盘默认关注的文本框,当页面更改为横向时我很乐意将其从“搜索”InputScope更改为另一个,可能是“URL”。当方向改变时,当前在那里的东西很好地重新排列页面上的元素,我很欣赏它可能看起来不那么整洁......

1 个答案:

答案 0 :(得分:5)

枚举中有多个“方向”状态 - 不只是PortraitLandscape。以下是我更改范围(在Windows Phone 7.5模拟器上):

if (e.Orientation == PageOrientation.Landscape
    || e.Orientation == PageOrientation.LandscapeRight
    || e.Orientation == PageOrientation.LandscapeLeft)
{
    InputScope inputScope = new InputScope();
    InputScopeName inputScopeName = new InputScopeName();
    inputScopeName.NameValue= InputScopeNameValue.Url;
    inputScope.Names.Add(inputScopeName);
    textBox1.InputScope = inputScope;
}

所以你要把它放到你的MainPage_OrientationChanged事件处理程序中。