2015-10-28 31 views
1

我目前正在使用Windows 10移动应用程序。我有一个简单的日期时间列表,像这样:在FlipView DataContext中绑定不同的ItemSource WPF

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); 
    } 
} 

现在我想告诉它,它的flipview,不是只有一天,但也是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属性,NextDatePrevDate,而在FlipView中,可以使用绑定RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ColumnHeadInfo}。但我不知道我应该做什么。

回答

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> 
+0

但是当我翻转时,它会翻转这三个项目!这绝对不是我所期望的:( –

相关问题