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代わりに使用したでしょうが、それはピッキングをサポートしていませんSecond。時間、分、秒を選択する必要があります

4

2 に答える 2

2

いくつかの実験を通して、いくつかの未知の理由で、LooopingSelectorはStackPanelをまったく好きではないことがわかりました。多くのLooopingSelectorが必要な場合、それを実現するための最良の方法はグリッドを作成することです。

これが私の変更された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>

私が間違っている場合は、遠慮なく訂正してください。

StackOverflowに精通している人のために、正しくフォーマットする方法がわからないので、投稿でそれらのXAMLをフォーマットするのを手伝ってください。

于 2012-05-30T08:50:42.557 に答える
2

ループセレクターでWidthHeightを設定する必要があります。ItemSizeこのコントロールは、絶対サイズのないケースをうまく処理しません。そのため、StackPanelでは機能しません。

StackPanelsは、無限の幅と高さを提供します。

通常、コントロールはこれらのケースを処理することになっていますが、プリミティブコントロールであるため、これらの値が設定されることを前提としています。

于 2013-09-30T16:10:23.793 に答える