Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u het Share-contract kunt ondersteunen in een desktop- of uwP-app (Universal Windows Platform). Het contract Delen is een eenvoudige manier om snel gegevens te delen, zoals tekst, koppelingen, foto's en video's, tussen apps. Een gebruiker kan bijvoorbeeld een webpagina met zijn vrienden delen met behulp van een sociale netwerk-app of een koppeling opslaan in een notitie-app om later naar te verwijzen.
Opmerking
De codevoorbeelden in dit artikel zijn afkomstig van UWP-apps. Desktop-apps moeten gebruikmaken van de IDataTransferManagerInterop. Zie WinRT UI-objecten weergeven die afhankelijk zijn van CoreWindow voor meer informatie en codevoorbeelden.
U kunt ook verwijzen naar het voorbeeld van de WPF-inhoudsbron-app en Deelopties integreren in uw Windows-app voor aanvullende informatie over het delen van gegevens in desktop-apps.
Een gebeurtenis-handler instellen
Voeg een DataRequested-gebeurtenishandler toe die moet worden aangeroepen wanneer een gebruiker een share aanroept. Dit kan gebeuren wanneer de gebruiker op een besturingselement in uw app tikt (zoals een knop- of app-balkopdracht) of automatisch in een specifiek scenario (als de gebruiker een niveau heeft voltooid en bijvoorbeeld een hoge score krijgt).
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += DataTransferManager_DataRequested;
Wanneer een DataRequested-gebeurtenis optreedt, ontvangt uw app een DataRequest-object . Dit bevat een DataPackage die u kunt gebruiken om de inhoud op te geven die de gebruiker wil delen. U moet een titel en gegevens opgeven die u wilt delen. Een beschrijving is optioneel, maar wordt aanbevolen.
DataRequest request = args.Request;
Gegevens kiezen
U kunt verschillende typen gegevens delen, waaronder:
- Tekst zonder opmaak
- Uniform Resource Identifiers (URI's)
- HTML
- Opgemaakte tekst
- Bitmaps
- Files
- Aangepaste door ontwikkelaars gedefinieerde gegevens
Het DataPackage-object kan een of meer van deze indelingen bevatten, in elke combinatie. In het volgende voorbeeld ziet u hoe u tekst deelt.
request.Data.SetText("Hello world!");
Eigenschappen instellen
Wanneer u gegevens inpakt voor delen, kunt u verschillende eigenschappen opgeven die aanvullende informatie bieden over de inhoud die wordt gedeeld. Deze eigenschappen helpen bij het doel van apps om de gebruikerservaring te verbeteren. Een beschrijving helpt bijvoorbeeld wanneer de gebruiker inhoud deelt met meer dan één app. Het toevoegen van een miniatuur bij het delen van een afbeelding of een koppeling naar een webpagina biedt een visuele verwijzing naar de gebruiker. Zie DataPackagePropertySet voor meer informatie.
Waarschuwing
Alle eigenschappen behalve de titel zijn optioneel. De titeleigenschap is verplicht en moet worden ingesteld.
request.Data.Properties.Title = "Share Example";
request.Data.Properties.Description = "A demonstration on how to share";
De deel-UI starten
Het systeem biedt een gebruikersinterface voor delen. Als u deze wilt starten, roept u de Methode ShowShareUI aan.
DataTransferManager.ShowShareUI();
Afhandeling van fouten
In de meeste gevallen is het delen van inhoud een eenvoudig proces. Er is echter altijd een kans dat er iets onverwachts kan gebeuren. De app kan bijvoorbeeld vereisen dat de gebruiker inhoud selecteert voor delen, maar dat de gebruiker geen inhoud heeft geselecteerd. Als u deze situaties wilt afhandelen, gebruikt u de methode FailWithDisplayText , waarmee een bericht aan de gebruiker wordt weergegeven als er iets misgaat.
Delen met gemachtigden vertragen
Soms is het misschien niet zinvol om de gegevens voor te bereiden die de gebruiker meteen wil delen. Als uw app bijvoorbeeld ondersteuning biedt voor het verzenden van een groot afbeeldingsbestand in verschillende mogelijke indelingen, is het inefficiënt om al deze afbeeldingen te maken voordat de gebruiker de selectie maakt.
Om dit probleem op te lossen, kan een DataPackage een gemachtigde bevatten, een functie die wordt aangeroepen wanneer de ontvangende app gegevens aanvraagt. Het is raadzaam om een gemachtigde te gebruiken wanneer de gegevens die een gebruiker wil delen, resource-intensief is.
async void OnDeferredImageRequestedHandler(DataProviderRequest request)
{
// Provide updated bitmap data using delayed rendering
if (this.imageStream != null)
{
DataProviderDeferral deferral = request.GetDeferral();
InMemoryRandomAccessStream inMemoryStream = new InMemoryRandomAccessStream();
// Decode the image.
BitmapDecoder imageDecoder = await BitmapDecoder.CreateAsync(this.imageStream);
// Re-encode the image at 50% width and height.
BitmapEncoder imageEncoder = await BitmapEncoder.CreateForTranscodingAsync(inMemoryStream, imageDecoder);
imageEncoder.BitmapTransform.ScaledWidth = (uint)(imageDecoder.OrientedPixelWidth * 0.5);
imageEncoder.BitmapTransform.ScaledHeight = (uint)(imageDecoder.OrientedPixelHeight * 0.5);
await imageEncoder.FlushAsync();
request.SetData(RandomAccessStreamReference.CreateFromStream(inMemoryStream));
deferral.Complete();
}
}