Como você obtém o item selecionado de um Silverlight AutoCompleteBox?
-
20-09-2019 - |
Pergunta
Espero sentir falta de algo extremamente óbvio aqui, mas para a minha vida, não consigo descobrir isso.
eu tenho um AutoCompleteBox
Controle que está recuperando resultados por meio de uma chamada assíncrona, embora eu não consiga encontrar uma maneira confiável de saber quando um usuário selecionou uma opção da lista de valores retornados. Eu tentei amarrar no SelectionChanged
Evento, mas isso dispara em todos os movimentos da lista suspensa do AutoComplete, quando o que eu realmente quero saber é quando um usuário disse definitivamente: "Ei, esse é o item que eu quero!" Ao clicar nele, ou selecionando -o com a tecla de retorno.
Qualquer conselho seria muito apreciado, pois isso está começando a me deixar um pouco louco agora. =)
Obrigado
Ps o SelectionChanged
Os argumentos do evento fornecem AddedItems
e RemovedItems
, mas não dê nenhuma indicação direta do tipo de seleção que estou procurando.
Solução
Não existe um evento específico que indique que o usado tenha sido especificamente atingido por uma opção, em vez de apenas navegar.
Para você o cenário, o mais próximo que você pode obter é DropDownClosed
ou até LostFocus
Eventos então acesse o SelectedItem
propriedade.
Outras dicas
Se você estiver usando o Telerik AutoCompleteBox, talvez o evento "Onentryadded" seja o que você está procurando. Vejo que essa pergunta foi feita há mais de 4 anos, então talvez esse evento não existisse naquela época. Acabei de atualizar para a atualização mais recente do Telerik Controls (Q2 2014). Aqui está um exemplo rápido. Eu removi as propriedades que não estamos discutindo aqui para limpá -lo, mas, obviamente, elas precisarão ser adicionadas de volta, a menos que você as configure no código (por exemplo, DataSourceId).
Página de origem:
<telerik:RadAutoCompleteBox ID="RadAutoCompleteBox1" runat="server" OnEntryAdded="RadAutoCompleteBox1_EntryAdded" >
</telerik:RadAutoCompleteBox>
Código de teste (em VB):
Protected Sub RadAutoCompleteBox1_EntryAdded(sender As Object, e As AutoCompleteEntryEventArgs)
MsgBox(e.Entry.Text) 'This is just to show you the DataValueField in your dev
MsgBox(e.Entry.Value) 'This is just to show you the DataTextField in your dev
racbCustomer.Entries.Clear() 'This will wipe out the selection(s)
End Sub