如何让WinRT InputScope在C#代码中工作,而不是XAML?

时间:2013-10-01 17:06:37

标签: c# xaml windows-runtime windows-store-apps

这是我的代码不起作用:

TheTextBox.InputScope = new InputScope();
TheTextBox.InputScope.Names.Add( 
    new InputScopeName( InputScopeNameValue.Number ) );

点击TextBox时没有显示特殊键盘。我刚拿到标准键盘。

我想让这个工作,但Windows 8显然不支持这个。我已经搜索了这个问题的答案,但只找到了改变XAML的解决方案。这对我来说不是一个解决方案,因为我不喜欢拥有一堆UserControl只是为了拥有各种输入范围。

我已将此代码添加到文本控件的Loaded事件处理程序中。正如一个互联网答案所暗示的那样,它仍然无法在那里发挥作用。

我尝试使用“Number”和“TelephoneNumber”,但都没有在代码中使用。

我正在使用Visual Studio 2012和Windows Store C#app项目。

感谢。

戴夫

1 个答案:

答案 0 :(得分:3)

重新排序:

var inputScope = new InputScope();
inputScope.Names.Add(new InputScopeName( InputScopeNameValue.Number ) );
TheTextBox.InputScope = inputScope;

显然,一旦设置了InputScope属性,它就不会观察/观察Names列表中发生的任何更改。所以,在你的代码中,它总是空的。我已将其更改为创建范围Add,然后在完成后设置。

它适用于我的测试。