2012-07-26 244 views
2

我正在为Windows Phone 7开发一个应用程序,并且我遇到了一个与标准TextBox相当奇怪的问题:我无法键入“空格”。所有其他按键都可以正常工作,但“空格”键只是简单地忽略,不会弹出任何错误。TextBox忽略“Space”键输入。为什么?

我动态地填充文本框。这里的代码负责这个:

var newComment = new TextBox() 
{ 
    Width = 378, 
    MaxLength = 128, 
    AcceptsReturn = true, 
    /*Tag = ... ,*/ 
    /*Style = ... ,*/ 
    /*BorderBrush = ... ,*/ 
    Margin = new Thickness(-12, 0, 0, 0) 
}; 

newComment.InputScope = new InputScope(); 
newComment.InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.Text }); 

newComment.KeyDown += (sender, args) => 
{ 
    if (args.Key == System.Windows.Input.Key.Enter) 
    { 
     args.Handled = true; 
     /* ... */ 
    } 
}; 

container.Items.Add(newComment); 

我注释了一些东西,(我认为)是无关紧要的。 “容器”是ListBox的一个实例。

当我在“KeyDown”事件处理程序中放置一个断点并按下“Space”时,args.Key为“未知”(args.PlatformKeyCode为“160”)。我有我的应用程序的其他地方(不动态虽然)的文本框,他们工作得很好。

在模拟器上以及在设备上测试(如果这有什么区别,我有HTC Mozart)。为芒果开发。

+0

如果你打算使用Text作为输入范围,为什么你需要指定这个?创建文本框时,这不是标准吗? – 2012-07-26 07:34:54

+0

标准的是没有自动完成功能的“默认”。 – volpav 2012-07-26 07:35:20

+1

我现在用你的代码做了一个测试项目,它工作得很完美。它不会忽略空格键,也不会在.KeyDown事件处理程序的e.Key字段(它表示空格)中给我未知的空间键。该问题必须在代码中的其他地方。 – 2012-07-26 07:39:37

回答

2

原来,问题是由于TextBoxButton之内(因为我需要能够挖掘整个“东西”)。将它放在Button之外解决了问题。

+0

如果你需要像你说的那样使用整个“东西”来使用'TextBox'的'Padding'属性 – harry180 2012-07-26 08:22:33

+0

@ harry180如果我不够清楚,但还有其他控制从'TextBox'(我喜欢,一个包含名称,日期和评论列表的发布记录)。这就是我所说的“整件事”的意思。 – volpav 2012-07-26 09:14:03