2010-09-29 6 views
0

Je rencontre un problème avec ma zone de liste modifiable et j'essaie d'obtenir le texte affiché dans la zone. J'ai l'ItemsSource lié à un SqlDataReader, et j'essaye de remplir une autre zone de liste déroulante basée sur quel élément est sélectionné dans la première zone de liste déroulante.WPF ComboBox s'affiche le texte

Dans l'événement de modification de la première liste déroulante, j'exécute une requête basée sur ce qui est sélectionné dans cette zone. Cependant, je ne peux pas obtenir ce texte pour la vie de moi. Tout ce que j'ai essayé retourne toujours "System.Data.Common.DataRecordInternal". Même lorsque j'essaie "comboBox.Text", il retourne cela même s'il n'est pas affiché. Ai-je mal fait la liaison? Ou est-ce que quelque chose ne va pas avec mon modèle d'élément pour la zone de liste déroulante?

Voici le code correspondant:

<ComboBox Name="cbTables" ItemsSource="{Binding ElementName=lstTables, Path=ItemsSource}" 
           SelectionChanged="cbTables_SelectionChanged" > 
         <ComboBox.ItemTemplate> 

          <DataTemplate> 
           <Label Content="{Binding Path=TABLE_NAME}" /> 
          </DataTemplate> 
         </ComboBox.ItemTemplate> 
        </ComboBox> 

Dites-moi si je dois poster quoi que ce soit d'autre. Merci

Répondre

1

Je ne vois rien de mal avec votre code xaml. DataRecordInternal est le type d'élément correct pour la collection sql. Si vous voulez que l'objet clr - lie le contrôle à la liste des objets clr. Mais si vous voulez juste la chaîne - vous pouvez essayer cette solution:

<ComboBox Name="cbTables" ItemsSource="{Binding ElementName=lstTables, Path=ItemsSource}" 
DisplayMemberPath="TABLE_NAME" SelectedValuePath="TABLE_NAME" SelectionChanged="cbTables_SelectionChanged" /> 


private void cbTables_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var str = cbTables.SelectedValue; 
} 
+0

Impressionnant merci! DisplayMemberPath = "TABLE_NAME" SelectedValuePath = "TABLE_NAME" correspondait à ce dont j'avais besoin. J'ai eu l'impression que c'était quelque chose de simple que je surplombais. – wangburger