none
Inhalt einer geladenen Datei in TextBlock anzeigen RRS feed

  • Frage

  • Hallo zusammen,

    ich probiere mich gerade´mit C# in der Appentwicklung für Windows 8.
    Prompt habe ich bemerkt, dass sich UI-Elemente und Befehle zur Windows.Forms-Entwicklung teils unterscheiden.

    Nun zu meiner Frage:
    Ich lade eine Datei mit dem FileOpenPicker, danach lasse ich über die XAML-Datei mit dem Binding-Befehl ein paar Informationen der Datei anzeigen.
    Nun möchte ich auch den Inhalt dieser Datei in einem TextBlock-Element (ich habe mir gedacht, dass dies das geeignetste Element ist) anzeigen lassen.
    Bei einer Windows.Forms-Anwendung wüsste ich, wie ich es mache. Nur bei der App-Entwicklung bin ich irgendwie überfragt.
    Kann mir da vielleicht jemand weiterhelfen? Wäre nett - Schon einmal vielen Dank im Voraus. :)

    Viele Grüße
    Adrian  
    Samstag, 30. März 2013 19:14

Antworten

Alle Antworten

  • Hallo,der TextBlock hat eine Text-Eigenschaft, diese entspricht der Text-Eigenschaft eines Labels in WinForms. Zum lesend der Dateio selbst kannst du dir folgendes ansehen:
    http://msdn.microsoft.com/de-de/library/windows/apps/xaml/hh758325.aspx

    Für normale Texte denke ich eignet sich der TextBlock mit am besten, allerdings gibt es auch noch andere Controls wie bspws. den RichTextBlock. Es kommt immer darauf an was die Datei nun genau enthält.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.

    Samstag, 30. März 2013 19:32
  • Super, vielen Dank, der Link hat mich schon sehr nach vorne gebracht! :)

    Ich hätte da nur noch zwei kleinere Fragen, dann, hoffe ich, klappt es:
    Und zwar benutze ich ja den IBuffer und den DataReader (müssten, wenn cih richtig geguckt habe, beides Interfaces sein).
    Nur von welcher Klasse erben dieses Interaces? Sie werden bei mir nicht gefunden. Ich habe zum Beispiel zum Test mit der Using Directive Windows.Storage.Streams.IBuffer; die Bibliothek für den IBuffer explizit importiert, aber das Interface wird weiterhin nicht gefunden.
    Schon einmal vielen Dank für eine Antwort :)

    Das hier ist meine Methode, die den Inhalt der Datei auslesen soll:
    private async void readPlaylistContent(Windows.Storage.StorageFile file)
            {
                try
                {
                    StorageFile playlistContent = file;
                    if (playlistContent != null)
                    {
                        IBuffer buffer = await FileIO.ReadBufferAsync(playlistContent);
                        using (DataReader dataReader = DataReader.FromBuffer(buffer))
                        {
                            string fileContent = dataReader.ReadString(buffer.Length);
                            playlistContentBox.Text = "The following " + buffer.Length + " bytes of text were read from '" + file.Name + "':" + Environment.NewLine + Environment.NewLine + fileContent;
                        }
                    }
                }
                catch (FileNotFoundException)
                {
                    rootPage.NotifyUserFileNotExist();
                }
            }

    Viele Grüße
    Adrian
    Sonntag, 31. März 2013 23:00
  • DataReader ist kein Interface, das merkt man schon daran das es nicht mit einem großen I beginnt. Das steht auch so im dazugehöhrigem MSDN-Artikel: http://msdn.microsoft.com/de-de/library/windows/apps/xaml/windows.storage.streams.datareader.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

    IBuffer ist dagegen eine Schnittstelle: http://msdn.microsoft.com/de-de/library/windows/apps/xaml/windows.storage.streams.ibuffer

    Schnittstellen können von nichts erben und DataReader erbt direkt von Object. Beide lassen sich im Windows.Storage.Streams-Namespace finden. Der Verweis auf die dazugehöhrige DLL (ich weiß gerade nicht welche) ist standartmäßig gesetzt.

    Wenn der Compiler bei dir IBuffer und DataReader nicht findet fehlt denke ich folgende Using-Direktive:

    using Windows.Storage.Streams;
    Eine Schnittstelle/Klasse so "hinzuzufügen" geht nicht, der Compiler sollte es dir auch gesagt haben das er den Namespace nicht finen konnte.


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.

    Sonntag, 31. März 2013 23:31
  • Ein fettes Danke, es läuft! :)
    Montag, 1. April 2013 00:22