在combobox.itemtemplate

时间:2016-05-30 18:47:32

标签: c# itemtemplate

我已经设法使用带有数据绑定的TextBlock项目将不同的String Date放入ComboBox,然后我想在我的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 个答案:

答案 0 :(得分:1)

dateComboBox,因此date.ToString()返回System.Windows.Controls.ComboBox是很自然的。

您希望获得所选日期项的值,而不是控件本身。

首先,您可以省略DataTemplatestrings会自动转为TextBoxes。只需在您的案例中指定DisplayMemberPathSelectedValuePath"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