FlipView - 是否可以绑定到集合中的两个项目?

时间:2013-07-17 09:25:32

标签: c# windows-8 microsoft-metro winrt-xaml flipview

我有一个显示图像的FlipView。我希望用户能够选择是否要一次查看一个或两个图像。这可以通过单个集合完成,还是需要为这两种模式设置两个不同的集合?

我现在对单个图像所拥有的是一个名为PageCollection的集合,它包含一个名为Page的类,其属性为Image。

<FlipView x:Name="flipView" ItemsSource="{Binding PageCollection}">
  <FlipView.ItemTemplate>
    <DataTemplate>          
        <Image Source="{Binding Image, Converter={StaticResource ImageConverter}}"/>
    </DataTemplate>
  </FlipView.ItemTemplate>
</FlipView>

我认为我可以解决它的方法是让另一个集合保持类似Pages的类具有两个图像属性而不是一个。像这样:

<FlipView x:Name="flipView" ItemsSource="{Binding PageCollection2}">
  <FlipView.ItemTemplate>
    <DataTemplate>
      <Grid>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="*"/>
          <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Image Source="{Binding Image1, Converter={StaticResource ImageConverter}}"/>
        <Image Source="{Binding Image2, Converter={StaticResource ImageConverter}}"/>
      </Grid>
    </DataTemplate>
  </FlipView.ItemTemplate>
</FlipView>

然后在需要时切换ItemsSource和DataTemplate。但这并不是正确的方法,因为保持两个集合同步似乎很麻烦。是否有可能通过单一集合或其他更有效的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

据我所知,没有比你描述的更简单的方法。

但是同步并不是那么困难:在视图模型上只有一个CurrentIndex和一个DoublePageCurrentIndex属性。将这些绑定到flipviews的SelectedIndex属性,并通过其setter保持同步。