Combobox selectionchanged les déclencheurs d'événement sans pour autant changer la sélection dans la zone de liste déroulante
Pourriez-vous m'aider à trouver l'erreur dans celui-ci: L'événement se déclenche avant même l'écran de windows est chargé. Je commence à voir la Boîte de message et ensuite je clique sur OK,après qu'il se charge de l'écran principal.Après cela, tout fonctionne parfaitement, je me demande ce qui déclenche la zone de liste déroulante SelectionChanged Événement avant même le chargement de la fenêtre.Le FillComboBoxFamilyData(SegmentCode) crée un dataset et met les valeurs de type int, il ComboBox. Veuillez Consulter ce lien pour code complet.
Pas en mesure de faire en cascade comboboxes travail
Toute aide serait très appréciée.Merci.
<ComboBox Height="23" HorizontalAlignment="Left" Margin="35,26,0,0" Name="comboBox1" VerticalAlignment="Top" Width="205" ItemsSource="{Binding Source={StaticResource tblSegmentViewSource}}" DisplayMemberPath="Segment Name" SelectedValuePath="Segment Code" SelectionChanged="comboBox1_SelectionChanged"/>
<ComboBox Margin="304,26,395,93" Name="comboBox2" />
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show(comboBox1.SelectedValue.ToString());
SegmentCode = Convert.ToInt32(comboBox1.SelectedValue.ToString());
FillComboBoxFamilyData(SegmentCode);
}
- avez-vous d'écrire le code, private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e), ou qui a été produit par un SDK?
Vous devez vous connecter pour publier un commentaire.
Au moment où les données seront chargées (relié par la liaison), SelectionChanged sera déclenché. Par conséquent, vous devez vérifier dans votre gestionnaire d'événements si votre application est prête et toutes les données sont chargées et attaché. Si non, retournez le gestionnaire d'événements sans rien faire. Ce comportement est par la conception.
Vous pouvez utiliser le
IsLoaded
-propriété pour détecter, si la liaison a déjà été évaluée.IsLoaded
ne sera pas vrai, à moins que la liaison de données-moteur a évalué votre xaml liaisons.Vous pouvez utiliser IsLoaded propriété de la liste déroulante pour vérifier si il est encore chargé. C'est la plus propre et la solution la plus simple que j'ai pu trouver:
J'ai eu ce même problème et j'ai trouvé que la mise de départ de la sélection de l'index de la combox en utilisant xaml qui va déclencher l'événement selectionchanged lorsque le programme est en cours de chargement qui provoque l'erreur.
À résoudre, vous pouvez définir la sélection d'index -1 (valeur par défaut) OU changer la sélection de l'indice de la zone de liste déroulante à l'aide de code après que le programme est chargé.
Je sais que c'est une vieille question, mais je suis tombé deux fois en essayant de résoudre ce problème dans mon projet et a eu les mêmes résultats que l'OP. Ma liste est remplie après la IsLoaded est vrai. Donc, j'ai pensé que je poste ce que j'ai compris pour les autres. Utilisez simplement le DropDowOpened événement pour définir un booléen à true. De cette façon, l'événement SelectionChanged de ne pas le feu jusqu'à ce que l'utilisateur clique sur la liste déroulante.