2013-10-14 3 views
0

3 개 콤보 상자 (시간 단위, 시간 단위, 분 단위, 초 단위)를 사용하여 시간을 선택하기위한 사용자 정의 컨트롤을 구현하려고합니다.objectdataprovider가 포함 된 WPF 시간 드롭 다운 상자

시간 I가 필요없이 그냥 XAML와 함께 할 수 있다고 생각

선택할 수있는 초 '콤보 상자가 번호 0 59'콤보는

분 선택할 수있는 0에서 23까지 번호가 '를 코드 숨김에서 동적으로 콤보 박스를 채 웁니다.

<ComboBox x:Name="HoursComboBox"> 
    <ComboBoxItem>0</ComboBoxItem> 
    <ComboBoxItem>1</ComboBoxItem> 
    ... 
    <ComboBoxItem>23</ComboBoxItem> 
</ComboBox> 

하지만이 코드는 많은 정적 코드와 불필요한 코드처럼 보입니다. 이런 식으로 코드 숨김에서 단 한 줄로 콤보 박스를 채울 수 있습니다.

HoursComboBox.ItemsSource = System.Linq.Enumerable.Range(0, 23); 

이 호출은 XAML에서 구현할 수 있습니까?

답변

2

밖으로 나옵니다.

<UserControl x:Class="MyControls.TimeSpanSelector" 
      xmlns:linq="clr-namespace:System.Linq;assembly=System.Core" 
      ...> 

    <UserControl.Resources> 
     <ObjectDataProvider x:Key="Hours" 
          ObjectType="{x:Type linq:Enumerable}" 
          MethodName="Range"> 
      <ObjectDataProvider.MethodParameters> 
       <sys:Int32>0</sys:Int32> 
       <sys:Int32>23</sys:Int32> 
      </ObjectDataProvider.MethodParameters> 
     </ObjectDataProvider> 
    </UserControl.Resources> 

    ... 

    <Border> 
     <ComboBox ItemsSource="{Binding Source={StaticResource Hours}}" /> 
    </Border> 

    ... 

</UserControl>