2016-05-30 1 views
0

J'ai réussi à placer une date de chaîne différente dans une zone de liste déroulante en utilisant des éléments TextBlock avec liaison de données, puis je voudrais obtenir le texte de l'élément sélectionné dans ma zone de liste déroulante , voici mon code WPF:Récupère le contenu d'un bloc de texte dans un combobox.itemtemplate

<ComboBox ItemsSource="{Binding ListProgram, ElementName=Window}" x:Name="date"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Name="test" Text="{Binding Date}"></TextBlock> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

J'ai essayé mais rien affiché:

Console.WriteLine(date.Text); 

J'ai aussi essayé cela et il ne fonctionne toujours pas:

Console.WriteLine(test.Text); 

Merci beaucoup, un programmeur débutant français.

+0

Vous pouvez obtenir la chaîne par appel ToString() sur la propriété Date de votre modèle de vue. C'est ce que la boîte de texte fait réellement. – JanDotNet

+0

J'ai essayé 'Console.WriteLine (date.ToString());' mais il affiche: "System.Windows.Controls.ComboBox" – BinX

+0

@qlthd car 'date' ** est ** un ComboBox. Première ligne de votre code: ''. –

Répondre

0

date est un ComboBox donc il est naturel que date.ToString() renvoie System.Windows.Controls.ComboBox.

Vous voulez obtenir la valeur de l'article sélectionné de date qui n'est pas le contrôle lui-même.

D'abord, vous pouvez omettre le DataTemplate. strings se transformer en TextBoxes automatiquement. Il suffit de spécifier le DisplayMemberPath et SelectedValuePath ("Date" dans votre cas, mais vous pouvez choisir différentes propriétés bien sûr) et WPF s'occupera du reste.

  • DisplayMemberPath raconte l'ComboBox qui propriété de l'élément à utiliser pour affichage l'élément.
  • SelectedValuePath raconte l'ComboBox dont la propriété à utiliser pour SelectedValue
<ComboBox ItemsSource="{Binding ListProgram, ElementName=Window}" 
    DisplayMemberPath="Date" SelectedValuePath="Date" x:Name="date"> 
</ComboBox> 

Dans votre code, vous pouvez obtenir l'élément sélectionné (ou inferieur a sa valeur) avec:

date.SelectedValue // will return the "Date" property of the selected Item 
date.SelectedItem // will return the item itself 
date.Text   // will return the string it is displaying 
+0

Merci beaucoup pour l'explication très claire, je l'ai maintenant! – BinX