1

我正在使用LoopingSelector本教程中所示的:WP7-LoopingSelector-in-depth--Part1。我刚刚复制了他们的 XAML 和 C# 代码。我稍微修改了 XAML 以适应我的布局,但它仍然类似于他们的教程。

这是我放置 LoopingSelector 的 XAML 代码:

<Grid>
    <StackPanel Grid.Row="2">
        <TextBlock Text="Countdown Time" HorizontalAlignment="Center"
                   FontSize="28" />
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
            <toolkitPrimitives:LoopingSelector x:Name="hSelector"
                               ItemMargin="2,3,3,2" ItemSize="100,100" />
            <TextBlock Text=":" VerticalAlignment="Center" FontSize="64"
                       FontFamily="{StaticResource Digital7}"/>
            <toolkitPrimitives:LoopingSelector x:Name="mSelector"
                               ItemMargin="2,3,3,2" ItemSize="100,100" />
            <TextBlock Text="'" VerticalAlignment="Center" FontSize="64"
                       FontFamily="{StaticResource Digital7}"/>
            <toolkitPrimitives:LoopingSelector x:Name="sSelector"
                               ItemMargin="2,3,3,2" ItemSize="100,100" />
        </StackPanel>
    </StackPanel>
</Grid>

其中toolkitPrimitives定义为:

xmlns:toolkitPrimitives="clr-namespace:Microsoft.Phone.Controls.Primitives;assem‌​bly=Microsoft.Phone.Controls.Toolkit"

这是我在后面的代码中所做的:

this.hSelector.DataSource = new IntLoopingDataSource()
{
    MinValue = 0,
    MaxValue = 23,
    SelectedItem = 0
};
this.mSelector.DataSource = new IntLoopingDataSource()
{
    MinValue = 0,
    MaxValue = 59,
    SelectedItem = 1
};
this.sSelector.DataSource = new IntLoopingDataSource()
{
    MinValue = 0,
    MaxValue = 59,
    SelectedItem = 0
};

我会TimePicker改用,但它不支持 pick Second。我需要选择小时、分钟秒。

4

2 回答 2

2

您需要在循环选择器上设置Width和。HeightItemSize此控件不能很好地处理没有绝对大小的情况。这就是为什么它在 StackPanel 中不起作用的原因。

StackPanels 提供无限的宽度和高度。

通常控件应该处理这些情况,但作为一个原始控件,它们假设这些值将被设置。

于 2013-09-30T16:10:23.793 回答
2

通过一些实验,我发现,由于一些未知的原因,LoopingSelector 根本不喜欢 StackPanel。如果你想拥有多个 LoopingSelector,最好的实现方式是制作一个网格。

这是我修改后的 XAML:

<Grid>
<StackPanel Grid.Row="2">
                        <TextBlock Text="Countdown Time" HorizontalAlignment="Center" FontSize="28" />
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="0.1*"/>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="0.1*"/>
                                <ColumnDefinition Width="1*"/>
                            </Grid.ColumnDefinitions>
                            <toolkitPrimitives:LoopingSelector Grid.Column="0" x:Name="hSelector" ItemMargin="2,3,3,2" ItemSize="100,100" Height="300"/>
                            <TextBlock Grid.Column="1" Text=":" VerticalAlignment="Center" FontSize="64" FontFamily="{StaticResource Digital7}"/>
                            <toolkitPrimitives:LoopingSelector Grid.Column="2" x:Name="mSelector" ItemMargin="2,3,3,2" ItemSize="100,100" Height="300"/>
                            <TextBlock Grid.Column="3" Text="'" VerticalAlignment="Center" FontSize="64" FontFamily="{StaticResource Digital7}" />
                            <toolkitPrimitives:LoopingSelector Grid.Column="4" x:Name="sSelector" ItemMargin="2,3,3,2" ItemSize="100,100" Height="300"/>
                        </Grid>
                    </StackPanel>
</Grid>

如果我错了,请随时纠正我。

ps 对于熟悉 StackOverflow 的人,请帮我在我的帖子中格式化这些 XAML,因为我不知道如何正确格式化它。

于 2012-05-30T08:50:42.557 回答