2016-05-30 81 views
0

我已經成功地把不同的字符串日期到使用數據綁定TextBlock的項目組合框,然後我想獲得所選項目的文字在我的組合框,這裏是我的WPF代碼:獲取TextBlock的內容設置在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

你可以通過串在視圖模型的Date屬性上調用ToString()。這是文本框實際上。 – JanDotNet

+0

我試圖'Console.WriteLine(date.ToString());'但它顯示: 「System.Windows.Controls.ComboBox」 – BinX

+0

@qlthd因爲'date' ** **是一個組合框。第一行代碼:''。 –

回答

0

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

您想得到所選日期爲的項目的值,它不是控件本身。

首先,你可以省略DataTemplatestrings自動變爲TextBoxes。只需指定DisplayMemberPathSelectedValuePath(你的情況"Date",但你可以選擇,當然不同的屬性)和WPF將完成剩餘的工作。

  • DisplayMemberPath講述了項目的屬性來使用顯示項目該組合框。
  • SelectedValuePath講述與使用哪個屬性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