Kolumne: Silverlight Expertise

Desktop Drag and Drop XAP-Datei richtig aktualisieren Tiles in Windows Phone 7.5 Mango
Kommentare

Die Silverlight-Kolumne „Silverlight Expertise“ des dot.NET Magazins präsentiert monatlich leckere Top-How-tos zum Thema Silverlight von Gregor Biswanger (http://www.dotnet-blog.net), sodass Einsteiger und Silverlight-Experten durch geballtes Wissen gesättigt werden. Neu dazu kommt jeweils ein How-to zur Windows-Phone-7-Entwicklung. Heute stehen auf der Menükarte „Desktop Drag and Drop“, „XAP-Datei richtig aktualisieren“ und „Tiles in Windows Phone 7.5 Mango“. Viel Spaß und einen guten Appetit!

Menü 1 für Einsteiger: Desktop Drag and Drop

Um Daten in eine Silverlight-4-Anwendung aufzunehmen, gibt es mehrere Möglichkeiten. Eine davon ist das Drag and Drop von Dateien aus dem Desktop, über den Browser, direkt zur Silverlight-Anwendung. Dabei kann jedes UI-Element die Daten annehmen. Dazu muss nur das AllowDrop Property auf True gesetzt werden, um das UI-Element zu aktivieren. Kinderelemente erben automatisch diese Aktivierung. Anschließend muss man nur noch den Drop-Event abonnieren, der gefeuert wird, sobald eine Datei über das UI-Element gedroppt wurde.

Der Drop-Event liefert mit den DragEventArgs ein Array von Datei(en), auch wenn nur eine Datei vom Anwender gedroppt wurde. Sie werden als FileInfo-Instanz geliefert. Die FileInfo-Klasse bietet hierbei einen Zugriff mittels Stream an, womit die Dateien komplett eingelesen werden können.

Listing 1 zeigt einen TextBlock und eine TextBox. Wenn man eine TXT-Datei mittels Drag and Drop auf den TextBlock droppt, wird der Drop-Event gefeuert, der uns die Datei liefert. Die Methode, die ausgeführt wird, liest jede Datei einzeln ein und schreibt der TextBox den Inhalt als Content. Unter Listing 2 sieht man den Code zum Auslesen der Datei, Abbildung 1 veranschaulicht das Szenario nochmals.

Listing 1: Desktop Drag and Drop für UI-Elemente aktivieren


    
        
            Drop text files here from your desktop
        
        
    
  

Listing 2: Gedroppte Dateien einlesen

private void StackPanel_Drop(object sender, DragEventArgs e)
{
    FileInfo[] files = e.Data.GetData(DataFormats.FileDrop) as FileInfo[];
    StringBuilder stringBuilder = new StringBuilder();

    if (files != null)
        foreach (FileInfo file in files)
        {
            using (StreamReader stream = file.OpenText())
            {
                stringBuilder.Append(stream.ReadToEnd());
            }
        }

    TbFileContent.Text = stringBuilder.ToString();
}  
Abb. 1: Silverlight 4, Desktop Drag and Drop
Abb. 1: Silverlight 4, Desktop Drag and Drop
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -