在Tap上关闭或隐藏Inputpane或单击listviewItem

时间:2013-08-02 22:34:26

标签: xaml windows-runtime windows-store-apps winrt-xaml

我一直在研究Windows 8应用程序,但我遇到了一个我似乎无法弄清楚的问题。我的应用程序正在使用MVVM设计模式,我希望在我的应用程序中尽可能少的代码。

我遇到的问题是我有一个包含各种项目的Listview。这些项目模板中包含文本框,因此您可以编辑项目的描述。当用户点击listiewItem中的te文本框时,触摸键盘会显示,但是当用户完成并且说触摸另一个listviewItem但不一定是文本框时。键盘保持不动。

所以它如下。用户点击listviewItem中的文本框并弹出键盘。用户完成,因此用户点击另一个listviewItem而不是文本框。键盘熬夜。这是不可取的。

当用户触摸文本框以外的任何内容时,我想让键盘关闭或隐藏。

我已阅读输入窗格here上的白皮书,我理解逻辑,但不幸的是,这不适合我的商业案例。

我已经链接了Sample Project,这将产生我正在谈论的内容。

1 个答案:

答案 0 :(得分:1)

根据您的具体要求,我可以考虑各种解决方案。我查看了您提供的示例项目。

  • 我的第一个解决方案是将ListView交换为ItemsControl。在示例中,您没有使用SelectedItem,因此将ItemsControl放在ScrollViewer中也可以。由于你不再处理ListItem,它会阻止InputPane熬夜。

  • 如果确实需要ListView,则可以处理SelectedItem中的更改以转移焦点。在界面后面放置一个不可见的元素(显然不是TextBox),如果选择了TextBlock以外的其他内容,则将其置于焦点上。如果您不希望它显示在您的界面中,您可以使用不显示所选项目的ListViewStyle。

如果这些解决方案中的任何一种适合您的方案,请告知我们。如果需要,我可以提供一些示例代码。