2010-01-18 1 views
1

바인딩 나는 hour:minute 형식의 날짜와 콤보 상자를 채우려는 정적 ArrayListDateTimesWPF - 콤보 날짜 시간 ArrayList를

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

의, 그래서 나는 항목은 형식이

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

을 ok - hour:minute이지만 항목을 선택할 때 cmbFinish.Value의 기본값은 DateTime.ToString()입니다. 내가 뭘 놓치고 있니? cmbFinish.Valuehour:minute 형식이어야합니다.

답변

1

ComboBox 클래스에 Value 속성이 표시되지 않습니다. SelectedValue 속성에 대해 생각하고 있었습니까? 이 경우 값을 DateTime (DateTime)cmbFinish.SelectedValue으로 변환 한 다음 원하는 문자열 형식으로 변환 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그렇습니다. cmvFinish.SelectedValue를 의미합니다. 미안 해요, 분명히하지 않았 으면 좋겠지 만, 당신이 의미하는 것을 얻지 못했습니다 (DateTime) cmbFinish.SelectedValue 및 변환 .. –

+0

콤보 상자가 편집 가능한 경우 SelectedValue 속성에 DateTime 또는 null이 포함될 수 있습니다. . SelectedValue를 DateTime으로 변환하기 전에이를 검사해야합니다. 두 경우 모두 ComboBox.Text 값을 읽으면 입력 된 텍스트를 읽을 수 있습니다. – Mart

0

죄송합니다 ... 내 콤보 상자는 True으로 설정된 IsEditable (질문에 추가하는 것을 잊었습니다) 속성이 있습니다. social msdn에 따르면이 경우 .SelectedValue은 변환기가 적용 되더라도 소스 값을 선택합니다.

IsEditable 속성이 False으로 설정된 경우 항목 형식 및 차이가 없습니다. SelectedValue 형식입니다. 지금 가장 좋은 방법은 문자열 ArrayList로 변환하는 것입니다.