2016-05-30 3 views
0

Мне удалось поместить другую строку String в ComboBox с помощью элементов TextBlock с привязкой данных, а затем я хотел бы получить текст выбранного элемента в своем ComboBox вот мой WPF код:Получите содержимое текстового блока в 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> 

Я попытался это, но она не отображается ничего:

Console.WriteLine(date.Text); 

Я также попробовал это, и это все еще не работает:

Console.WriteLine(test.Text); 

Большое спасибо, начинающий программист на французском языке.

+0

Вы можете получить строку по вызывая ToString() в свойстве Date вашей модели представления. То есть текстовое поле действительно делает. – JanDotNet

+0

Я пробовал 'Console.WriteLine (date.ToString()) ;, но он отображает:« System.Windows.Controls.ComboBox » – BinX

+0

@qlthd, потому что' date' ** - это ** ComboBox. Первая строка вашего кода: ''. –

ответ

0

date - ComboBox, так что это естественно только для date.ToString(), чтобы вернуть System.Windows.Controls.ComboBox.

Вы хотите получить значение выбранного элемента даты, который не является самим элементом управления.

Во-первых, вы можете опустить DataTemplate. strings автоматически превращается в TextBoxes. Просто укажите DisplayMemberPath и SelectedValuePath ("Date" в вашем случае, но вы можете выбрать различные свойства, конечно), и WPF позаботится обо всем остальном.

  • DisplayMemberPath рассказывает ComboBox, какое свойство элемента, используемые для отображения детали.
  • SelectedValuePath рассказывает ComboBox, какое свойство использовать для SelectedValue
<ComboBox ItemsSource="{Binding ListProgram, ElementName=Window}" 
    DisplayMemberPath="Date" SelectedValuePath="Date" x:Name="date"> 
</ComboBox> 

В своем коде вы можете получить выбранный элемент (или его значение) с:

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

Спасибо за очень четкое объяснение, я получил его сейчас! – BinX

Смежные вопросы