0

我正在尝试使用 3 个组合框来实现一个用户控件来选择时间 - 一个代表小时,第二个代表分钟,第三个代表秒。

小时的组合框有从 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 中实现这个调用吗?

4

1 回答 1

3

原来我可以。

<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>
于 2013-10-14T11:20:24.577 回答