Share via


ICollectionView.CurrentChanging イベント

定義

このインターフェイスを実装する場合は、現在の項目を変更する前に、このイベントを発生させます。 イベント ハンドラーは、このイベントを取り消すことができます。

// Register
event_token CurrentChanging(CurrentChangingEventHandler const& handler) const;

// Revoke with event_token
void CurrentChanging(event_token const* cookie) const;

// Revoke with event_revoker
ICollectionView::CurrentChanging_revoker CurrentChanging(auto_revoke_t, CurrentChangingEventHandler const& handler) const;
event CurrentChangingEventHandler CurrentChanging;
function onCurrentChanging(eventArgs) { /* Your code */ }
iCollectionView.addEventListener("currentchanging", onCurrentChanging);
iCollectionView.removeEventListener("currentchanging", onCurrentChanging);
- or -
iCollectionView.oncurrentchanging = onCurrentChanging;
Event CurrentChanging As CurrentChangingEventHandler 

イベントの種類

次のコード例では、CurrentChanging イベントを処理する方法を示します。 この例では、XAML は、CollectionViewSource にバインドされた GridView を持つページの内容を示しています。 分離コードは CollectionViewSource の初期化を示しています。これには、CurrentChanging イベント ハンドラーをアタッチするために 、その Source の設定と ビュー の取得が含まれます。

<Page.Resources>
  <CollectionViewSource x:Name="cvs" />
  <DataTemplate x:Key="myDataTemplate">
    <Border Background="#FF939598" Width="200" Height="200">
      <TextBlock Text="{Binding Path=Name}" />
    </Border>
  </DataTemplate>
</Page.Resources>

<Grid Background="{StaticResource ApplicationPageBackgroundBrush}">
  <GridView x:Name="PicturesGrid" 
    SelectionMode="Single" CanReorderItems="False" CanDragItems="False"
    ItemsSource="{Binding Source={StaticResource cvs}}"                
    ItemTemplate="{StaticResource myDataTemplate}" >
    <GridView.ItemsPanel>
      <ItemsPanelTemplate>
        <WrapGrid VerticalChildrenAlignment="Top" 
          HorizontalChildrenAlignment="Left" />
      </ItemsPanelTemplate>
    </GridView.ItemsPanel>
  </GridView>
</Grid>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var library = Windows.Storage.KnownFolders.PicturesLibrary;
    var queryOptions = new Windows.Storage.Search.QueryOptions();
    queryOptions.FolderDepth = Windows.Storage.Search.FolderDepth.Deep;
    queryOptions.IndexerOption = 
        Windows.Storage.Search.IndexerOption.UseIndexerWhenAvailable;

    var fileQuery = library.CreateFileQueryWithOptions(queryOptions);

    var fif = new Windows.Storage.BulkAccess.FileInformationFactory(
        fileQuery, 
        Windows.Storage.FileProperties.ThumbnailMode.PicturesView, 190, 
        Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale, 
        false);

    var dataSource = fif.GetVirtualizedFilesVector();
    cvs.Source = dataSource;
    cvs.View.CurrentChanging += View_CurrentChanging;
}

private void View_CurrentChanging(object sender, CurrentChangingEventArgs e)
{
    Debug.WriteLine("Cancel = " + e.Cancel);
    Debug.WriteLine("IsCancelable = " + e.IsCancelable);
    if (e.IsCancelable == true)
    {
        // Cancel the change. The previously selected item remains selected.
        e.Cancel = true;
    }
}

注釈

CurrentChanging イベントは、 CurrentItem プロパティの値が変更されるときに発生します。 イベント ハンドラーに渡される CurrentChangingEventArgs パラメーターは、変更に関する情報を指定します。 IsCancelabletrue の場合、イベント ハンドラーは Cancel を true に設定することで変更を取消すことができます。 変更が取り消された場合、 CurrentItem は変更されません。 IsCancelablefalse の場合に Cancel を true に設定すると、例外がスローされます。

このインターフェイスを実装するクラスは、CurrentChanging イベントを発生させ、必要に応じて IsCancelable を設定し、CurrentItem を変更して CurrentChanged イベントを発生させる前に Cancel プロパティをチェックする必要があります。

適用対象