1

J'ai obtenu ce tir cbxJobPosition_SelectionChanged comme prévu. Le problème est lorsqu'une méthode externe essaie de définir cbxJobPosition.Est-ce que WPF ComboBox SelectedIndex et SelectedValue ont un comportement différent sur l'événement SelectionChanged?

cbxJobPosition est databinded avec une liste d'objets de type JobPosition:

  • JobPositionID: 1, JobPositionName: Directeur

  • JobPositionID: 2, JobPositionName: Employé

  • JobPositionID : 3, JobPositionName: Tierce partie

Voici le XAML:

<ComboBox Cursor="Hand" DataContext="{Binding}" ItemsSource="{Binding}" 
FontSize="13" Name="cbxJobPosition"  
SelectedValuePath="JobPositionID" DisplayMemberPath="JobPositionName" 
SelectedIndex="0" Width="233" Height="23" 
SelectionChanged="cbxJobPosition_SelectionChanged" /> 

sur la méthode UserControl_Loaded, il lit la base de données la liste des tâches et essayer de définir la position de travail spécifique « tierce partie »:

//calls cbxJobPosition_SelectionChanged and passes the correct SelectedValue within 
cbxJobPosition.SelectedIndex = 3; 

//calls cbxJobPosition_SelectionChanged and but won't pass the correct SelectedValue within 
cbxJobPosition.SelectedValue = "3"; 

Comme vous pouvez remarquez que lorsque le traitement est automatiquement redirigé vers cbxJobPosition_SelectionChanged, l'attribut SelectedValue aura des valeurs différentes pour chaque instruction ci-dessus lorsque vous déboguez dans l'événement cbxJobPosition_SelectionChanged.

Est-ce que quelqu'un sait si cette différence est prévue, ai-je manqué quelque chose ou cela pourrait être un bug?

Répondre

0

JobPositionID est-il string? Sinon, cela pourrait expliquer pourquoi cela ne fonctionne pas. Au niveau de la liaison de données, WPF ne convertira pas automatiquement string en int. Je devine qu'il change la sélection sur la boîte à aucun quand vous l'essayez.

+0

JobPositionID est int –

+0

Je suis arrivé avec la recherche de l'élément avec LINQ et la définition de SelectedItem de la zone de liste déroulante avec l'objet trouvé et l'exécution des instructions SelectionChanged (sur une méthode externe). Je peux dire que je n'aime pas cette solution. –

+0

Eh bien, je ne connais pas tous les détails de ce que vous faites, mais au moins pour l'exemple, vous pouvez analyser "3" dans un int, puis l'utiliser pour définir SelectedValue. – RandomEngy

Questions connexes