2010-10-22 20 views
5

Dans le code source de AutoCompleteBox (téléchargeable à partir de Microsoft) J'ai trouvé ce qui suit:Silverlight 4 AutoCompleteBox, la mise en SelectedItem à null

/// <summary> 
/// Called when the selected item is changed, updates the text value 
/// that is displayed in the text box part. 
/// </summary> 
/// <param name="newItem">The new item.</param> 
private void OnSelectedItemChanged(object newItem) 
{ 
    string text; 

    if (newItem == null) 
    { 
    text = SearchText; 
    } 
    else 
    { 
    text = FormatValue(newItem, true); 
    } 

    // Update the Text property and the TextBox values 
    UpdateTextValue(text); 

    // Move the caret to the end of the text box 
    if (TextBox != null && Text != null) 
    { 
    TextBox.SelectionStart = Text.Length; 
    } 
} 

Ce qui me trouble est {text = SearchText;} ligne. Si je lie SelectedItem à mon ViewModel et après une entrée de recherche dans AutoCompleteBox, SearchText n'est pas vide, puis lorsque les données sous-jacentes sont réinitialisées à null, AutoCompleteBox peut afficher SearchText au lieu de chaîne vide. Quelqu'un peut-il expliquer pourquoi il est écrit de cette façon, et suggérer une solution de contournement?

+0

Merci de m'avoir indiqué la bonne direction. –

Répondre

1

Je crois que c'est ainsi que lorsqu'il n'y a pas d'élément de recherche réel, la boîte affiche quelque chose comme "Rechercher ici". Pour un exemple, voir la boîte de recherche de StackOverflow, qui dit "search" quand il est vide.

+0

Sons et regards à partir du code limité disponible. – cofiem

1

C'est vraiment énervant et je n'ai pas encore trouvé de solution. Il est sur le tracker de problème Silverlight Toolkit here. J'ai également lu quelque chose here sur la définition de l'ItemsSource à null avec lequel je vais jouer avec.

Je mettrai à jour si je trouve une solution de contournement.