2011-07-29 12 views
1

とにかく、オートコンプリートボックスのドロップダウンリストをプログラムで却下する方法はありますか?私の使用例は以下の通りです。Windows Phone 7のオートコンプリートボックスのドロップダウンリストを却下する方法

MainPage.xamlはSearchPage.xaml(つまり/SearchPage.xaml?query=someText)に値を渡します。

SearchPage.xaml.csで、私は設定し、この時点で

autoCompleteBox.Text = NavigationContext.QueryString["query"]. 

は、提案試合のドロップダウンリストが表示されます。私は、ページがちょうどナビゲートされたときにこの動作を望んでいません。

また、ドロップダウンリストを却下しようとしましたが、それは役に立たなかった。

autoCompleteBox.Text = NavigationContext.QueryString["query"]; 
autoCompleteBox.IsDropDownOpen = false; 

ドロップダウンリストには、それは焦点を失ったときに離れてAutoCompleteBoxから行くようですが、私はそれがフォーカスを失うように設定するプロパティ/フィールドが表示されません。

ご了承ください。

まあ、私はちょっと微妙に変わってきて、きれいになった。 SearchPage.xaml.csのコンストラクタに次のコードがあります。

autoCompleteBox.TextFilter += DummyFilter; 
autoCompleteBox.GotFocus += (s,args) => { 
if(!isAutoCompleteBoxInit) { 
    autoCompleteBox.TextFilter -= DummyFilter; 
    autoCompleteBox.TextFilter += RealFilter; 
} 
} 

ダミーフィルタは次のようになります。

bool DummyFilter(string search, string value) { return false; } 

RealFilterは次のようになります。私OnNavigatedTo方法で

bool RealFilter(string search, string value) { 
if(null != value) return value.ToLower().StartsWith(search.ToLower()); 
} 

、私はセットここで、[ "クエリ"] autoCompleteBox.Text = NavigationContext.QueryString、です。だから私は今これを行うとき、DummyFilterは常にfalseを返すので、ドロップダウンリストは消えます。ユーザーがAutoCompleteBoxにフォーカスすると、正しいFilterが既にTextFilterプロパティに接続されているかどうかを確認し、そうでなければスイッチを行います。

あなたのお役に立てば幸いです。

答えて

2

ページにフォーカス可能なコントロールはありますか?フォーカスをどこかに設定するだけで、問題は解決されるはずです。

+0

これは機能しませんでした。私はTextBlockを追加し、デザイン時に折りたたみの可視性を設定しました。ページがナビゲートされると、私はTextBlock.Focus()と呼ばれ、これはまったく役に立たなかった。それが私のために働く唯一の方法は、私が上記のことです。 – jake

+0

@ user373312ビジュアルツリーから削除されたときに折りたたまれているものにフォーカスを設定することはできません –

+0

this.Focus()を試してみましたが、フォーカスをページ全体に設定しましたか? –

0

オートコンプリートボックスのテキストを変更すると、ドロップダウンが開きます。ユーザーがテキストを変更して一致した場合にのみ、ドロップダウンが閉じます。

userInitiatedをtrueに変更すると、一致するものがあればドロップダウンが閉じます。

private void UpdateTextCompletion(bool userInitiated) 
    { 
     userInitiated = true; ... 
関連する問題