1

現在、Windows 10 Mobile アプリを使用しています。次のような単純な DateTime リストがあります。

public DateTime NextDate { get; set;}
public DateTime PrevDate { get; set;}
// list of date
public List<DateTime> DateList { get; set; }

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    DateTime beginDate = new DateTime(2015, 9, 22);
    DateTime endDate = DateTime.Today;
    DateList = new List<DateTime>();
    for (DateTime date = beginDate; date < endDate; date = date.AddDays(1))
    {
        DateList.Add(date);
    }
}

ここで、1 日だけでなく、当日、前日、翌日の 3 日間のフリップビューを表示したいと考えています。

ここに私のXAMLコードがあります:

<FlipView x:Name="dateFlipView" BorderBrush="Azure" Height="100"
            ItemsSource="{Binding DateList}" SelectionChanged="dateFlipView_SelectionChanged">
    <FlipView.ItemTemplate>
        <DataTemplate>
            <!-- show previous date -->
            <Canvas Height="100" Width="100" Background="#FF7683FF">
                <StackPanel Width="100" HorizontalAlignment="Left">
                    <TextBlock Text="{Binding Day}" Style="{StaticResource HeaderTextBlockStyle}" HorizontalAlignment="Center"/>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                        <TextBlock Text="{Binding Month}" Margin="0,0,8,0" Style="{StaticResource CaptionTextBlockStyle}"/>
                        <TextBlock Text="{Binding Year}" HorizontalAlignment="Right" Style="{StaticResource CaptionTextBlockStyle}"/>
                    </StackPanel>
                    <StackPanel>
                        <TextBlock Text="{Binding Day}"/>
                    </StackPanel>
                </StackPanel>
            </Canvas>
            <!-- show next date -->
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

上記のコードは、1 つの日付のみを表示します。

NextDate2 つの DateTime プロパティを追加できるソリューションを見つけましPrevDateた。FlipView では Binding を使用できますRelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ColumnHeadInfo}。しかし、私はまだ何をすべきか正確にはわかりません。

4

1 に答える 1

0

以下のようにデータを保持するカスタム型リストを作成することで、これを実現できます。

public class DateTimeModel
{
    public DateTime PreviousDate { get; set; }

    public DateTime NextDate { get; set; }

    public DateTime CurrentDate { get; set; }
}

そして、リストの人口は次のとおりです。

        DateTime beginDate = new DateTime(2015, 9, 22);
        DateTime endDate = DateTime.Today;
        DateList = new List<DateTimeModel>();
        DateTimeModel model; 

        for (DateTime date = beginDate; date < endDate; date =     date.AddDays(1))
        {
            model = new DateTimeModel();
            model.PreviousDate = date.AddDays(-1);
            model.CurrentDate = date;
            model.NextDate = date.AddDays(1);
            DateList.Add(model);
        }

また、ItemTemplate コンテキストのリストに追加された各モデル オブジェクトを取得できます。DataContext から、以下のようにこれらのプロパティにアクセスできます。

    <ItemsControl x:Name="dateFlipView" BorderBrush="Azure" Height="100"
        ItemsSource="{Binding DateList}" >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!-- show previous date -->
                <Canvas Height="100" Width="100" Background="#FF7683FF">
                    <StackPanel Width="100" HorizontalAlignment="Left">
                        <TextBlock Text="{Binding PreviousDate.Day}" Style="{StaticResource HeaderTextBlockStyle}" HorizontalAlignment="Center"/>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                            <TextBlock Text="{Binding PreviousDate.Month}" Margin="0,0,8,0" Style="{StaticResource CaptionTextBlockStyle}"/>
                            <TextBlock Text="{Binding PreviousDate.Year}" HorizontalAlignment="Right" Style="{StaticResource CaptionTextBlockStyle}"/>
                        </StackPanel>
                        <StackPanel>
                            <TextBlock Text="{Binding PreviousDate.Day}"/>
                        </StackPanel>
                    </StackPanel>
                    <StackPanel Width="100" HorizontalAlignment="Left">
                        <TextBlock Text="{Binding NextDate.Day}" Style="{StaticResource HeaderTextBlockStyle}" HorizontalAlignment="Center"/>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                            <TextBlock Text="{Binding NextDate.Month}" Margin="0,0,8,0" Style="{StaticResource CaptionTextBlockStyle}"/>
                            <TextBlock Text="{Binding NextDate.Year}" HorizontalAlignment="Right" Style="{StaticResource CaptionTextBlockStyle}"/>
                        </StackPanel>
                        <StackPanel>
                            <TextBlock Text="{Binding NextDate.Day}"/>
                        </StackPanel>
                    </StackPanel>
                </Canvas>
                <!-- show next date -->

            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
于 2015-10-28T11:32:39.310 に答える