J'essaie de comprendre comment utiliser AutoCompleteBox avec MVVM Light.Comment utiliser AutoCompleteBox avec MVVM Light?
public ICommand AutoComplete
{
get
{
return new RelayCommand<KeyEventArgs>(e =>
{
var txtBox = e.OriginalSource as TextBox;
if (e.Key == Key.Unknown)
{
return;
}
string autoComplete = txtBox.Text + e.Key;
if (autoComplete.Length >= 3)
{
RestClient c = new RestClient("http://localhost:3333/api/store");
RestRequest r = new RestRequest("/GetStoreNames",Method.GET);
r.AddParameter("Name", autoComplete);
r.AddParameter("Latitude", "49");
r.AddParameter("Longitude", "49");
var d = c.BuildUri(r);
c.ExecuteAsync(r, response2 =>
{
var content = response2.Content;
});
}
});
}
}
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding AutoComplete, Mode=OneWay}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<toolkit:AutoCompleteBox x:Name="acbStore" Margin="154,196,29,0" VerticalAlignment="Top" RenderTransformOrigin="0.6,0.083" Height="162" MinimumPopulateDelay="500"/>
J'ai fait ci-dessus, mais il y a quelques problèmes.
Une fois les résultats obtenus, comment les afficher dans la zone d'auto-complétion?
Comment puis-je retarder le traitement de plusieurs requêtes à la fois? Comme vous pouvez le voir, je ne veux pas frapper le serveur avant que 3 caractères soient entrés, mais après cela, c'est un jeu équitable. Je suis un peu inquiet que comme 20 demandes seront faites au serveur avant que la première demande le rend menant à la bande passante gaspillée.
Ya désolé pensé qu'il a montré l'événement keyDown mais je l'utilise. Je vais vérifier cela et voir comment ça se passe. – chobo2