方法: データ CollectionView のオブジェクト間を移動する

ビューでは、並べ替え、フィルター処理、グループ化に応じて、同じデータ コレクションを異なる方法で表示できます。 ビューでは、現在のレコード ポインターの概念が提供され、ポインターを移動できます。 この例では、CollectionView クラスで提供されている機能を使用して、現在のオブジェクトを取得する方法と、データ コレクション内のオブジェクト間を移動する方法を示します。

この例では、myCollectionView は、バインドされたコレクションに対するビューである CollectionView オブジェクトです。

次の例では、OnButton はアプリケーションの Previous ボタンと Next ボタンのイベント ハンドラーであり、これらのボタンを使用してユーザーはデータ コレクション内を移動できます。 IsCurrentBeforeFirst プロパティと IsCurrentAfterLast プロパティによって、MoveCurrentToFirstMoveCurrentToLast を適切に呼び出すことができるように、現在のレコード ポインターがリストのそれぞれ先頭および末尾にあるかどうかが報告されることに注意してください。

ビューの CurrentItem プロパティは、コレクション内の現在の注文項目を返すために、Order としてキャストされます。

//OnButton is called whenever the Next or Previous buttons
//are clicked to change the currency
  private void OnButton(Object sender, RoutedEventArgs args)
  {
      Button b = sender as Button;

      switch (b.Name)
      {
          case "Previous":
              myCollectionView.MoveCurrentToPrevious();

              if (myCollectionView.IsCurrentBeforeFirst)
              {
                  myCollectionView.MoveCurrentToLast();
              }
              break;

          case "Next":
              myCollectionView.MoveCurrentToNext();
              if (myCollectionView.IsCurrentAfterLast)
              {
                  myCollectionView.MoveCurrentToFirst();
              }
              break;

          o = myCollectionView.CurrentItem as Order;
          // TODO: do something with the current Order o
      }
  }
'OnButton is called whenever the Next or Previous buttons
'are clicked to change the currency
  Private Sub OnButton(ByVal sender As Object, ByVal args As RoutedEventArgs)
      Dim b As Button = TryCast(sender, Button)

      Select Case b.Name
          Case "Previous"
              myCollectionView.MoveCurrentToPrevious()

              If myCollectionView.IsCurrentBeforeFirst Then
                  myCollectionView.MoveCurrentToLast()
              End If

          Case "Next"
              myCollectionView.MoveCurrentToNext()
              If myCollectionView.IsCurrentAfterLast Then
                  myCollectionView.MoveCurrentToFirst()
              End If
              Exit Select

          o = TryCast(myCollectionView.CurrentItem, Order)
          ' TODO: do something with the current Order o 
      End Select
  End Sub

関連項目