Quickstart: Managing folders in the Music, Pictures, and Videos libraries (XAML)

[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]

Add existing folders of music, pictures, or videos to the corresponding libraries. You can also remove folders from libraries, and get the list of folders in a library.

Prerequisites

  • Understand async programming for Windows Runtime apps using C++, C#, or Visual Basic.

    You can learn how to write asynchronous apps in Quickstart: Calling asynchronous APIs in C# or Visual Basic.

  • Select the required capability in the app manifest file.

    In Visual Studio, open the app manifest file in Manifest Designer. On the Capabilities page, select the libraries that your app manages.

    • Music Library
    • Pictures Library
    • Videos Library
  • Import the Windows.Storage namespace in your code.

    At the top of each class file that uses the methods and properties described in this topic, add the following line of code:

    using Windows.Storage;
    

Get a reference to a library

To get a reference to the user's Music, Pictures, or Video library, select the corresponding capability in the app manifest file, and then call the StorageLibrary.GetLibraryAsync method. Provide the corresponding value from the KnownLibraryId enumeration.

    StorageLibrary myPictures =
        await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);

Get the list of folders in a library

To get the list of folders in a library, get the value of the StorageLibrary.Folders property.

    IObservableVector<StorageFolder> myPictureFolders = myPictures.Folders;

Get the folder in a library where new files are saved by default

To get the folder in a library where new files are saved by default, get the value of the StorageLibrary.SaveFolder property.

    StorageFolder savePicturesFolder = myPictures.SaveFolder;

Add an existing folder to a library

To open a folder picker and let the user select an existing folder to add to a library, call the StorageLibrary.RequestAddFolderAsync method. There are no options to customize the picker.

    StorageFolder newFolder = await myPictures.RequestAddFolderAsync();

Remove a folder from a library

To remove a folder from a library, call the StorageLibrary.RequestRemoveFolderAsync method and specify the folder to be removed.

Before you call the RequestRemoveFolderAsync, you can get the list of folders in the library from the Folders property of the library. Then you can display the list of folders in a ListView control or a similar control, and let the user select the folder to remove.

The following example assumes that the user has selected the folder to remove from a ListView control named lvPictureFolders.

    StorageFolder folderToRemove = (StorageFolder)lvPictureFolders.SelectedItem;
    bool result = await myPictures.RequestRemoveFolderAsync(folderToRemove);

Get notified of changes to the list of folders in a library

To get notified about changes to the list of folders in a library, register a handler for the StorageLibrary.DefinitionChanged event of the library.

    void HandleDefinitionChanged(StorageLibrary sender, object args)
    {
        // ...
    }

Summary and next steps

To learn more about working with folders and files, see the following topics: