Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, 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

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

My.Wpf.Extensions in Visual Basic 2008

Come sapete, la versione 2.0 di .NET Framework introdusse, per gli sviluppatori Visual Basic 2005, il namespace My. Si tratta di un particolare namespace che offre scorciatoie ad attività di comune utilizzo (es. accesso al File System, al registro, ai log, all’autenticazione utenti) attraverso specifici oggetti che il più delle volte evitano di dover scrivere svariate righe di codice.

Ripreso anche in .NET 3.5, My è un namespace molto interessante perché non è rigido e può essere esteso dallo sviluppatore al fine di esporre oggetti di proprio interesse. Con riferimento a questa possibilità, in Visual Basic 2008 questo namespace è stato esteso dagli sviluppatori di VB affinché offra specifiche estensioni dedicate a Windows Presentation Foundation. Ciò significa che, oltre a poter utilizzare quanto già conoscevamo, abbiamo a disposizione ulteriori oggetti dedicati in via esclusiva a WPF.

 

Vediamo meglio di cosa si tratta, creando un nuovo progetto WPF con Visual Basic 2008 Express Edition. Se in Solution Explorer attiviamo la visualizzazione di tutti i file, otterremo quanto mostrato in figura:

 

 

Troveremo quindi una cartella chiamata MyExtensions in cui è presente un file chiamato MyWpfExtensions.vb. Poiché siamo curiosi, possiamo provare ad aprire questo file e a vedere cosa contiene. Innanzittutto, la dichiarazione:

 

Namespace My

    ''' <summary>

    ''' Module used to define the properties that are available in the My Namespace for WPF

    ''' </summary>

    ''' <remarks></remarks>

    <Global.Microsoft.VisualBasic.HideModuleName()> _

    Module MyWpfExtension

 

Le estensioni di My, quindi, risiedono in un modulo. Tuttavia, notate l’utilizzo dell’attributo HideModuleName, che consente (anche verso l’IntelliSense) di non dover mostrare il nome del modulo stesso. Infatti, senza questo attributo, dovremmo scrivere qualcosa del tipo My.MyWpfExtension.Application mentre grazie all’attributo in questione è sufficiente scrivere My.Application.

 

Per vedere quali sono gli oggetti esposti dalle My.Wpf.Extensions, possiamo visualizzarne l’elenco dall’IDE:

 

 

 

Non entreremo nel dettaglio dell’implementazione (in linea generale possiamo dire che il codice ottiene l’istanza di determinati oggetti caratterizzanti di WPF restituendoli sotto forma di oggetti dipendenti da My), anche perché alcune proprietà non riguardano solo WPF, mentre vedremo alcuni esempi.

 

Ad esempio, se mi trovo in ambito multithreading e voglio conoscere le informazioni sul thread associato al Dispatcher posso scrivere questa riga:

 

        'Ottiene il thread cui è associato il Dispatcher (ambito multithreading)

        Dim myThread As System.Threading.Thread = My.Application.Dispatcher.Thread

 

Oppure potrei aver bisogno di ottenere una serie di informazioni sull’insieme delle finestre che costituiscono l’interfaccia della mia applicazione:

 

        'Ottiene e cicla l'elenco delle finestre disponibili

        Dim myWindows = My.Application.Windows

        For Each finestra As Window In myWindows

            MessageBox.Show(finestra.Title)

        Next

 

Se invece mi serve una specifica finestra, e magari anche le relative proprietà:

 

        'Raggiunge una specifica finestra consentendo l'accesso alle relative proprietà

        MessageBox.Show(My.Windows.Window2.Title)

 

Oppure posso ottenere informazioni sulla finestra principale (ma posso anche impostarla):

 

        'Ottiene (ma può anche impostare) la finestra principale

        Dim mainWindow As Window = My.Application.MainWindow

        MessageBox.Show(mainWindow.Title)

 

In conclusione, My è molto flessibile e adattabile alle proprie esigenze. Se volete informazioni in più su come estendere il namespace, potete fare riferimento alla MSDN Library, che dedica un mini-portale solo a My.

 

Alessandro

Print | posted on lunedì 11 maggio 2009 22:28 | Filed Under [ Visual Basic Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET