
Silverlight 3 permet à présent d’enregistrer des fichiers sur la machine cliente. En effet, la classe SaveFileDialog permet via la méthode ShowDialog d’afficher la fenêtre “Enregistrer sous” propre à votre système d’exploitation. Cette fonctionnalité est bien entendu sécurisée car elle nécessite l’action de l’utilisateur. Utilisateur <=> Sécurité ? Bon ok soit… Via la propriété Filter il est d’ailleurs possible de spécifier l’extension du fichier sauvegardé adéquate.
Save File Dialog en vidéo
View on Vimeo.
Côté code C# :
{
   SaveFileDialog mySaveDialog = new SaveFileDialog();
   mySaveDialog.Filter = "Text Files (.txt)|*.txt|All Files|*.*";
    bool? ret = mySaveDialog.ShowDialog();
    if (ret == true)
    {
        using (Stream fs = (Stream)mySaveDialog.OpenFile())
        {
        byte[] info = (new UTF8Encoding(true)).GetBytes(tbTest.Text);
        fs.Write(info, 0, info.Length);
        fs.Close();
      }
   }
}
Cela ouvre les portes à de nouveaux scénario. Vous allez pouvoir sauvegarder des DataGrid au format Excel, sauvegarder des images pourquoi pas modifiée (faut-il le coder),… au sein de vos applications Silverlight. En couplant cette fonctionnalité au mode déconnecté cela enrichi réellement les méthodes d’usage de Silverlight.
EDIT : Si vous rencontrez des problèmes lors de la sauvegarde d’un fichier et que l’exception IOException : “The directory name is invalid” je vous invite à faire un tour sur les forums officiels : http://silverlight.net/forums/t/84656.aspx