2010-01-18 55 views
1

我有靜態的DateTimesWPF - 組合框綁定到一個DateTime的ArrayList

<Window.Resources> 
    <col:ArrayList x:Key="startHours"> 
     <sys:DateTime>0:00</sys:DateTime> 
     <sys:DateTime>0:30</sys:DateTime> 
     <!-- .... --> 
    </col:ArrayList> 
</Window.Resources> 

一個ArrayList我想填充組合框與hour:minute格式的日期,所以我做

<ComboBox x:Name="cmbFinish" 
      ItemsSource="{Binding Source={StaticResource startHours}}" 
      ItemStringFormat="t"/> 

的項目是格式化好 - hour:minute,但是當我選擇一個項目時,cmbFinish.Value的默認格式爲DateTime.ToString()。我錯過了什麼?我需要cmbFinish.Value格式爲hour:minute格式。

回答

1

我在ComboBox類中看不到Value屬性。你在考慮SelectedValue屬性嗎? 在這種情況下,將其值轉換爲DateTime (DateTime)cmbFinish.SelectedValue,然後可以將其轉換爲所需的字符串格式。

+0

謝謝你的回答,你是對的,我的意思是cmvFinish.SelectedValue。對不起,如果我沒有讓自己清楚,但我不明白你的意思(日期時間)cmbFinish.SelectedValue並將其轉換.. – 2010-01-18 13:23:37

+0

如果您的組合框是可編輯的,SelectedValue屬性可能包含DateTime或null 。在將SelectedValue投射到DateTime之前,必須檢查它。在這兩種情況下,您都可以閱讀ComboBox.Text值來閱讀輸入的文本。 – Mart 2010-01-18 14:31:11

0

對不起...我的組合框有一個IsEditable(我忘了把它添加到問題中)屬性設置爲True。根據social msdn在這種情況下,.SelectedValue將拾取源值,即使它應用了轉換器。

如果IsEditable屬性設置爲False,則在項目格式和項目之間沒有差別。 SelectedValue格式。現在我認爲最好的方法是綁定到一個轉換成字符串ArrayList。