2015-10-28 62 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

但是當我翻轉時,它會翻轉這三個項目!這絕對不是我所期望的:( –

相關問題