2013-10-14 3 views
0

Я пытаюсь реализовать пользовательский элемент управления для выбора времени с помощью 3 comboboxes - один час, второй - минуты и третий за секунды.Разница во времени WPF с objectdataprovider

рабочего дня выпадающий имеет номер от 0 до 23, чтобы выбрать из

минут и секунды выпадающего списка имеет номер от 0 до 59, чтобы выбрать из

Я считаю, что может сделать это только с XAML без необходимости заполняйте comboboxs динамически в кодебе.

<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> 
Смежные вопросы