2009-10-02 9 views

Répondre

1

Je pense que le problème sera que les éléments de la zone de liste déroulante sont remplis dans un thread d'arrière-plan (par la liaison) et donc au moment où vous définissez SelectedIndex à 0 il n'y a aucun élément dans le . liste

Si tel est le cas, l'astuce consiste à gérer l'événement StatusChanged sur le ItemContainerGenerator de ComboBox et de définir votre index sélectionné il.

comboBox1.ItemContainerGenerator.StatusChanged += ItemContainerGenerator_StatusChanged; 

void ItemContainerGenerator_StatusChanged(object sender, EventArgs e) 
{ 
    if (comboBox1.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) 
    { 
     return; 
    } 

    // unhook the event - we don't need it now 
    comboBox1.ItemContainerGenerator.StatusChanged -= 
     ItemContainerGenerator_StatusChanged; 

    comboBox1.SelectedIndex = 0; 
} 
+0

Oh mon Dieu. Est-ce que le pouvoir a remplacé la simplicité, lol. Merci de votre aide. Ce qui doit être doit être. – MrGreggles

+0

La raison est maintenant apparente: je créais l'objet dans la liste XAML et comme je ne savais pas comment peupler un tel objet dans XAML que je faisais en C#, les choses n'étaient pas synchronisées je suppose. La création et la population étant maintenant effectuées dans XAML, la définition de SelectedIndex dans XAML fonctionne correctement. Merci Matt pour le code. Il pourrait être utile à l'avenir. – MrGreggles

+0

(Excusez les erreurs grammaticales ci-dessus - un résultat de changer et ne pas vérifier. – MrGreggles

0

J'ai tendance à utiliser des types de données à base de ObservableCollection pour le DataContext

Questions connexes