WP7 の AutoCompleteBox で AutoSelect を無効にする方法はありますか? 今何が起こっているかというと、何かを書き、それが検索候補にリストされるたびに、ロジックが実行されます。ユーザーは、提案、Enter キー、または検索ボタンをクリックしたときにのみ実際の検索を実行したいため、これは私が望むものではありません。だから、私の質問は次のとおりです。これを無効にするにはどうすればよいですか?
現在の方法:
xaml ファイルで、AutoCompleteBox を表示し、それを key up と selectionchanged にバインドします。
<toolkit:AutoCompleteBox x:Name="AutoCompleteBox" FilterMode="None" ItemsSource="{Binding SearchSuggestion}" KeyUp="AutoCompleteBoxKeyUp" MinimumPrefixLength="3">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding TextBoxKeyUpCommand, Mode=OneWay}" CommandParameter="{Binding Text, ElementName=AutoCompleteBox}"/>
</i:EventTrigger>
<i:EventTrigger EventName="SelectionChanged">
<GalaSoft_MvvmLight_Command:EventToCommand x:Name="TextBoxSelectionChanged" Command="{Binding TextBoxSelectionChangedCommand, Mode=OneWay}" CommandParameter="{Binding Text, ElementName=AutoCompleteBox}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</toolkit:AutoCompleteBox>
xaml.cs で keyup イベントをリッスンし、ビューモデルにメッセージを送信します。
private void AutoCompleteBoxKeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
Messenger.Default.Send(new ViewModelMessage { Action = ViewModelMessage.ACTION_EXECUTE, Text = AutoCompleteBox.Text });
Pivot.Focus();
}
}
ビューモデルで:
private void TextBoxKeyUp(string string)
{
_string = string;
}
private void TextBoxSelectionChanged(string string)
{
_string = string;
}
private void ReceiveMessage(ViewModelMessage message)
{
switch (message.Action)
{
case ViewModelMessage.ACTION_EXECUTE:
_string = message.Text;
break;
}
}
問題は、ドロップダウンをクリックしたときに SelectionChanged イベントが発生するだけでなく、ドロップダウンにリストされているものを入力したときにも発生することです。誰かが助けてくれることを願っています:)