Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WinRT e la Clipboard

Accedere ai famosi appunti di Windows, la Clipboard, è una delle operazioni più comuni in ogni contesto applicativo.

Nelle app per Windows 8 questo è ancora possibile, sebbene ci siano alcune differenze negli oggetti che si usano e negli elementi che si possono memorizzare.

La gestione della Clipboard è demandata alla classe Clipboard esposta dal namespace Windows.ApplicationModel.DataTransfer. Chi ha avuto esperienza di sviluppo per Windows 8 può già notare una cosa: il namespace Windows.ApplicationModel.DataTransfer è lo stesso che si usa con lo Share contract, quello attraverso cui condividiamo contenuti con altre app o col sistema operativo.

Ciò implica che gli oggetti che vengono memorizzati nella o recuperati dalla Clipboard sono packages di tipo Windows.ApplicationModel.DataTransfer.DataPackage, proprio quello utilizzato nello Share.

Quindi?  Si crea un'istanza di questo oggetto, lo si popola con ciò che si vuole memorizzare, si passa tale istanza all'oggetto Clipboard. Il seguente esempio mostra come memorizzare del testo:

        Dim pkg As New DataPackage
        pkg.SetText("Some text to the Clipboard")
 
        Clipboard.SetContent(pkg)

Altri metodi il cui nome è piuttosto chiaro, tipo SetBitmap, SetRtf, SetUri, SetHtmlFormat (più altri complessi) permettono di memorizzare diverse tipologie di contenuti. Altri piccoli esempi:

        'Memorizza un Uri
        pkg.SetUri(New Uri("http://www.visual-basic.it"))
        'Memorizza Html
        pkg.SetHtmlFormat("<span style=""font-size:10px;"">Some Html</span>""")

Per leggere il contenuto della Clipboard si utilizza dapprima il metodo Clipboard.GetContent, che restituisce un oggetto DataPackageView, quindi in modalità asincrona si attende il risultato di uno dei metodi preposti, il cui nome termina con Async come nel seguente esempio:

    Private Async Function ReadClipboard As Task
        Dim content As DataPackageView = Clipboard.GetContent()
        Dim result = Await content.GetTextAsync
        'Elabora il testo qui...
    End Function

Chiaramente è possibile predeterminare il tipo di contenuto nella Clipboard, sfruttando il metodo DataPackageView.Contains, il cui argomento è una stringa che rappresenta il formato. Fortunatamente non c'è da ricordare i formati, poiché la classe StandardDataFormats mette a disposizione proprietà che semplificano il compito:

    Private Async Function ReadClibpoard() As Task
        Dim content As DataPackageView = Clipboard.GetContent
        If content.Contains(StandardDataFormats.Text) Then
            Dim text = Await content.GetTextAsync
            'Elabora il testo...
        ElseIf content.Contains(StandardDataFormats.Html) Then
            'Elabora l'Html...
        End If
    End Function

La documentazione MSDN aiuta poi a capire meglio l'interazione con oggetti complessi come ad esempio le Bitmap o le risorse.

Alessandro

Print | posted on sabato 24 novembre 2012 15:19 | Filed Under [ Visual Basic UWP e Windows Store Apps Visual Studio 2012 ]

Powered by:
Powered By Subtext Powered By ASP.NET