2013-10-14 53 views
0

我想實現一個用戶控件選擇時間與3組合框 - 一個小時,第二分鐘和第三秒。WPF時間下拉框與objectdataprovider

小時組合框從0到23的數字從

紀要選擇幾秒鐘組合框具有數字0至59從

選擇,我相信我可以用XAML做,而不需要在代碼隱藏中動態填充組合框。

<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>