L'un des points de faiblesses de silverlight 3.0 comparé a ses concurents était de ne pas povoir accéder a ses fichiers locaux directement a partir de l'application silverlight 3.0. Désormais, Grâce à la nouvelle version de silverlight (silverlight 4.0) tout cela est maintenant possible.

Cette nouveauté se résume à une méthode : « Environment.GetFolderPath » qui nous permet de récupérer le répertoire du chemin désiré. Dans le cas opposé, si l’on veut énumérer tous les fichiers contenus dans un répertoire, nous avons la méthode : « Directory.EnumerateFiles »
|
using System;
using System.Collections.Generic;
using [...]
namespace APILocalFiles
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void OnEnumerateLocaFiles(object sender, RoutedEventArgs e)
{
List<string> photosInFolder = new List<string>();
var photos = Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
foreach (var item in photos)
{
photosInFolder.Add(item);
}
lbPhotos.ItemsSource = photosInFolder;
}
}
}
|
Ici il est créé une méthode permettant d’énumérer tous les fichiers et dossiers contenus dans le répertoire indiqué en paramètre.
La boucle foreach permet ici d’ajouter chaque élément énuméré à la liste de chaine de caractère créée au début.

Après compilation on obtient la fenêtre ci-dessus.
Cependant si l’on clique sur « Enumerate Local Files » Visual Studio nous sort une exception présentée ci-dessous. En effet, pour que cette nouvelle API fonctionne correctement, il faut absolument que l’application s’exécute en dehors du navigateur et en mode plus de privilège.

Pour palier à cette exception il suffit d’aller dans les propriétés de l’application silverlight et cocher les lignes suivantes :
-« Enable running application out of browser »

-« Require elevated trust when running outside the browser » après avoir cliqué sur « Out-of-Browser Settings… »

Ensuite on relance l’application et là, à l’aide d’un clic droit, on installe l’application sur l’ordinateur.
En effet, l'accés aux fichiers locaux se fait en Out Of Browser (OOB)
De plus, si par exemple nous voulons implanter cette fonctionalité dans une application utilisée par de nombreuses personnes, ces dernieres devront toutes installer cette application en "local" sur leurs machines. Ce dernier point peut à la fois etre un avantage et un inconvénient.

Une fois cette application installée, si l’on clique sur « enumerate files » la liste des dossiers et documents contenus dans le répertoire est affichée, comme cela nous est détaillé ci-dessous :

Nous pouvons dés-lors affirmer que par cette nouveauté ainsi que bien d'autres non citées ici, silverlight 4.0 exprime bien sa volonté de revenir au contact de ses principaux concurents tel que le flash.
Bien évidemment a l'heure où est écrit cet article la version 4 de Silverlight n'est aps une réelle nouveauté. De plus avec la sortie de la version 5 de HTML, cette derniere tend à faire oulier silverlight.
Attendons de voir la version 5 de Silverlight qui s'annoce assez intérésente :)
7a4f11d6-6ca8-496c-943f-e2bc94b6edb2|0|.0
C#, Silverlight, Visual Studio 2010