在Windows Phone 8.1应用程序上以编程方式多次更改文本框的输入范围

时间:2016-01-09 21:49:01

标签: xaml windows-phone-8.1 inputscope

我正在尝试在运行时以编程方式更改Windows Phone 8.1应用程序中文本框的输入范围,但更改仅在第一次有效。

我有这个xaml页面:

<Page
    x:Class="InputScopeTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:InputScopeTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Margin="53,117,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="302"/>
        <Button x:Name="buttonAlpha" Content="Alpha" HorizontalAlignment="Left" Margin="53,229,0,0" VerticalAlignment="Top" Click="buttonAlpha_Click"/>
        <Button x:Name="buttonNumeric" Content="Numeric" HorizontalAlignment="Left" Margin="246,229,0,0" VerticalAlignment="Top" Click="buttonNumeric_Click"/>
    </Grid>
</Page>

这个.cs页面:

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Navigation;

namespace InputScopeTest
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private void buttonAlpha_Click(object sender, RoutedEventArgs e)
        {
            InputScope scope = new InputScope();
            InputScopeName name = new InputScopeName();

            name.NameValue = InputScopeNameValue.AlphanumericFullWidth;
            scope.Names.Add(name);

            textBox.InputScope = scope;
        }

        private void buttonNumeric_Click(object sender, RoutedEventArgs e)
        {
            InputScope scope = new InputScope();
            InputScopeName name = new InputScopeName();

            name.NameValue = InputScopeNameValue.Number;
            scope.Names.Add(name);

            textBox.InputScope = scope;
        }
    }
}

在模拟器和Windows Phone 8.1设备上,只有在您第一次点击其中一个按钮时,文本框的输入范围才会正确更改。例如,如果我点击&#34;数字&#34;按钮首先,输入范围正确地更改为数字键盘。但是,如果我然后点击&#34; Alpha&#34;按钮,输入范围不会改变为字母数字键盘。

以上代码取自MSDN,它看起来只有在第一次更改范围时才有效。第二次忽略变化。

我做错了吗?是否有另一种方法可以多次以编程方式设置文本框的输入范围?

0 个答案:

没有答案