WPF Label Content zur Laufzeit aktualisieren - eingelesene Dateinamen anzeigen

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von lordknoblauch.

    WPF Label Content zur Laufzeit aktualisieren - eingelesene Dateinamen anzeigen

    Hallo,

    also ich möchte mir ein Programm zur Verwaltung meiner mp3 Dateien schreiben. Da das ganze auch noch schick aussehen soll, dachte ich mir warum nicht die neuen Möglichkeiten der WPF nutzen.

    Beim Start des Programms erscheint ein kleines Fenster mit einem Label. Im Content dieses Labels steht die aktuell eingelesene Datei. Alle Dateien werden in einem Dataset gespeichert.

    da es mit der Zuweisung LabelDateiName.Content = DateiNameString nicht funzt, habe ich mir die Vorlage aus dem Buch VB 2008 genommen und angepasst:


    1. Class erstellen im Modul "Class_ChangeContent.vb":

    Imports System.ComponentModel

    Public Class FNameChange : Implements INotifyPropertyChanged

    Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) _
    Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged

    Private Text As String

    Public Property Content() As String
    Get
    Return Text
    End Get
    Set(ByVal value As String)
    Text = value
    OnPropertyChanged(Content)
    End Set
    End Property

    Protected Sub OnPropertyChanged(ByVal Prop As String)
    RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Prop))
    End Sub


    End Class

    2. ein Objekt dieser Class erstellen im Modul "WindowStart.xaml.vb"

    Dim FName As FNameChange = CType(FindResource("Fname"), FNameChange)


    3. eine Binding zwischen Label und Objekt FName herstellen im Modul "WindowStart.xaml"

    <Window x:Class="Window_StartLoad"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:clr="clr-namespace:system;assembly=mscorlib"
    xmlns:src="clr-namespace:MyJukebox2010"
    Loaded="Form_Load" ContentRendered="Window_Main_ContentRendered" Opacity="1"
    Title="My Jukebox 2010" Width="600" Height="180" WindowStyle="None" AllowsTransparency="true" Background="Transparent" WindowStartupLocation="CenterScreen" Name="Window_Main">

    <Window.Resources>
    <src:FNameChange x:Key="Fname" />
    </Window.Resources>

    <Grid Name="Grid1" DataContext="{StaticResource Fname}>
    <Label Name="LoadText" Height="25" HorizontalAlignment="Center" VerticalAlignment="Bottom" Content="{Binding Path=Content}"/>
    </Grid>
    </Window>

    4. Dateien einlesen im Modul "WindowStart.xaml.vb"

    For Each fi In Path.GetFiles()
    If fi.Extension = ".mp3" Then

    FName.Content = fi.Name

    Dim rw_Audio As System.Data.DataRow = My.Application.dt_Audio.NewRow()
    nr = nr + 1
    rw_Audio("Nr") = nr
    rw_Audio("FD_FileName") = fi.Name
    rw_Audio("FD_FileMB") = Format(fi.Length / (1024 * 1024), "0.00") & " MB"
    My.Application.dt_Audio.Rows.Add(rw_Audio)
    End If
    Next

    Es werden alle mp3-Dateien im vorgegebenen Verzeichnis eingelesen und sind auch im Dataset. Aber wie bekomme ich es nun hin, das ich im Startfenster im Label die Dateinamen sehe. Habe es mal getestet, das einlesen von 3000 mp3s geht rasend schnell. Sicher zu schnell für die Anzeige. Es wird nur der 1. gefundene mp3-Titel im Label.content angezeigt.

    Arbeite mit VB 2008 unter Win 7 64 Bit.

    Bin bei der WPF neu und tue mich da auch noch etwas schwer, aber das muß doch machbar sein !!!

    Kann mir jemand helfen ???