1

我目前正在使用 Windows 10 移动应用程序。我有一个简单的 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);
    }
}

现在我想向它展示翻转视图,不仅是一天,而且是 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>

上面的代码只显示了一个日期。

我找到了一个解决方案,我可以添加 2 个 DateTime 属性,NextDate并且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 回答