2016-05-30 10 views
0

Ich habe es geschafft, verschiedene String Date in eine ComboBox mit TextBlock-Elementen mit Datenbindung zu setzen, und dann möchte ich den Text des ausgewählten Elements in meiner ComboBox abrufen , hier ist mein WPF-Code:Erhalte den Inhalt eines Textblocks in einer 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> 

ich das versucht, aber es nichts angezeigt:

Console.WriteLine(date.Text); 

ich habe versucht, dies auch, und es ist immer noch nicht funktioniert:

Console.WriteLine(test.Text); 

Vielen Dank, ein Französisch Anfänger Programmierer.

+0

Sie können die Zeichenfolge erhalten Aufrufen von ToString() für die Date-Eigenschaft Ihres Ansichtsmodells. Das ist, war die Textbox tatsächlich. – JanDotNet

+0

Ich habe versucht 'Console.WriteLine (date.ToString());', aber es zeigt: "System.Windows.Controls.ComboBox" – BinX

+0

@qlthd weil 'date' ** ist ** eine ComboBox. Erste Zeile Ihres Codes: ''. –

Antwort

0

date ist ein ComboBox so ist es nur natürlich für date.ToString(), System.Windows.Controls.ComboBox zurückgeben.

Sie möchten den Wert des ausgewählten Elements des Datums erhalten, das nicht die Steuerung selbst ist.

Zuerst können Sie die DataTemplate weglassen. strings automatisch in TextBoxes verwandelt werden. Geben Sie einfach die DisplayMemberPath und SelectedValuePath ("Date" in Ihrem Fall, aber Sie können natürlich verschiedene Eigenschaften wählen) und WPF kümmert sich um den Rest.

  • DisplayMemberPath erzählt die ComboBox, die Eigenschaft des Elements zu Anzeige das Element zu verwenden.
  • SelectedValuePath erzählt die ComboBox, die Eigenschaft für SelectedValue
<ComboBox ItemsSource="{Binding ListProgram, ElementName=Window}" 
    DisplayMemberPath="Date" SelectedValuePath="Date" x:Name="date"> 
</ComboBox> 

In Ihrem Code verwenden Sie das ausgewählte Element erhalten kann (oder es ist Wert) mit:

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

Vielen Dank für die sehr klare Erklärung, ich habe es jetzt! – BinX

Verwandte Themen