1

画像を表示する FlipView があります。ユーザーが一度に 1 つまたは 2 つの画像を表示するかどうかを選択できるようにしたいと考えています。これは 1 つのコレクションで実行できますか? それとも、2 つのモードに対して 2 つの異なるコレクションが必要ですか?

1 つの画像に対して現在持っているのは、Image プロパティを持つ Page というクラスを含む PageCollection というコレクションです。

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

私がそれを解決できると思う方法は、1 つではなく 2 つの画像プロパティを持つ 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 を切り替えます。しかし、2 つのコレクションの同期を維持するのは面倒に思えるので、これは正しい方法とは思えません。これを単一のコレクションまたは他のより効率的な方法で解決することは可能ですか?

4

1 に答える 1

0

私の知る限り、あなたが説明した方法よりも簡単な方法はありません。

ただし、同期はそれほど難しくありません。ビュー モデルに CurrentIndex プロパティと DoublePageCurrentIndex プロパティを設定するだけです。これらをフリップビューの SelectedIndex プロパティにバインドし、セッターを通じて同期を維持します。

于 2013-07-17T09:31:37.963 に答える