1

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

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

所以它如下。用户点击 listviewItem 中的文本框并弹出键盘。用户完成,因此用户点击另一个 listviewItem 但不是文本框。键盘保持不动。这是不希望的。

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

我已经阅读了此处输入窗格上的白皮书,并且理解其中的逻辑,但不幸的是,这对于我的业务案例来说并不理想。

我已经链接了一个示例项目,它将产生我上面所说的内容。

4

1 回答 1

1

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

  • 我的第一个解决方案是将 ListView 换成 ItemsControl。在示例中,您没有使用 SelectedItem,因此将 ItemsControl 放入 ScrollViewer 也可以。由于您将不再处理 ListItem ,因此它将阻止 InputPane 保持正常运行。

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

请让我知道这些解决方案是否适合您的场景。如果需要,我可以提供一些示例代码。

于 2013-09-04T12:14:25.533 回答