2013-08-02 59 views
1

我一直在研究Windows 8應用程序,並遇到了一個我似乎無法弄清的問題。我的應用程序使用的是MVVM設計模式,我希望儘可能在整個應用程序中保留儘可能少的代碼。關閉或隱藏點擊或隱藏輸入窗口或點擊listviewItem

我遇到的問題是我有一個列表視圖與各種項目。這些項目被模板化爲在其中具有文本框,因此您可以編輯項目的描述。當用戶單擊listiewItem中的te文本框時,將顯示觸摸鍵盤,但是當用戶完成並說觸及另一個listviewItem但不一定是文本框時。鍵盤保持不變。

所以它如下。用戶點擊listviewItem中的文本框並彈出鍵盤。用戶完成後,用戶點擊另一個listviewItem而不是文本框。鍵盤保持不變。這是不希望的。

我想在用戶觸摸除文本框以外的其他任何東西時關閉或隱藏鍵盤。

我已閱讀輸入窗格here上的白皮書,我理解這一邏輯,但不幸的是,這並不符合我的商業案例。

我已經鏈接了一個Sample Project這將產生我在上面談論的。

回答

1

根據您的具體要求,我可以考慮各種解決方案。我看了你提供的示例項目。

  • 我的第一個解決方案是交換ListView的ItemsControl。在示例中,您沒有使用SelectedItem,因此將ItemsControl放入ScrollViewer也可以。既然你不再處理ListItem,它將阻止InputPane繼續。

  • 如果您確實需要ListView,您可以在SelectedItem中處理更改以移動焦點。在界面後面放置一個不可見元素(顯然不是TextBox),如果選擇了TextBlock以外的其他元素,則將其設置爲焦點。如果你不希望它顯示在你的界面中,你可以使用ListViewStyle,它不顯示任何選定的項目。

請讓我知道這些解決方案是否適合您的情況。如果需要,我可以提供一些示例代碼。

+0

我最終使用了一個ItemsControl,就像你提到的那樣,它工作的很棒:)。謝謝你指點我正確的方向! – lvloss