Получить содержимое текстового блока в combobox.itemtemplate
Мне удалось поместить другую строковую дату в ComboBox, используя элементы TextBlock с привязкой данных, и затем я хотел бы получить текст выбранного элемента в моем ComboBox, вот мой код WPF:
<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);
Большое спасибо, французский начинающий программист.
1 ответ
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