listview column format und Dateiendung Ausblenden?

  • WPF

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von StolleJay.

    listview column format und Dateiendung Ausblenden?

    Ich habe mich nun langsam weiter in die xaml Sache und die Bindings eingearbeitet und brauche aber jetzt erst einmal wieder Hilfe von euch.
    Wie kann ich bestimmte Zellen (Spalten) anders Formatieren? zb. Das mir statt 20140213 eben 13.02.2014 Angezeigt wird oder statt 1538 dann 15:38.

    Und wie bekomme ich die Dateiendung von Weg wenn ich den Dateiname schon gesplittet habe?

    XAML:

    XML-Quellcode

    1. <ListView x:Name="listview" HorizontalAlignment="Left" Height="482" Margin="0,151,0,0" VerticalAlignment="Top" Width="1264" Foreground="#FF434343" ItemsSource="{Binding}">
    2. <ListView.View>
    3. <GridView>
    4. <!--<GridViewColumn/>-->
    5. <GridViewColumn Header="Date" Width="140" DisplayMemberBinding="{Binding Path=Date}"/>
    6. <GridViewColumn Header="Time" Width="100" DisplayMemberBinding="{Binding Path=Time}"/>
    7. <GridViewColumn Header="Nation" Width="160" DisplayMemberBinding="{Binding Path=Nation}"/>
    8. <GridViewColumn Header="Vehicle" Width="160" DisplayMemberBinding="{Binding Path=Vehicle}"/>
    9. <GridViewColumn Header="Map" Width="160" DisplayMemberBinding="{Binding Path=Map}"/>
    10. </GridView>
    11. </ListView.View>
    12. </ListView>


    VB.NET-Quellcode

    1. Dim replayFiles As String() = Directory.GetFiles(My.Settings.path & "\folder")
    2. For Each replayFile As String In replayFiles
    3. Dim separators() As String = {"_", "-"}
    4. Dim NameSplit() As String = Path.GetFileName(replayFile).Split(separators, StringSplitOptions.RemoveEmptyEntries)
    5. listview.Items.Add(New With {Key .Date = NameSplit(0), Key .Time = NameSplit(1), Key .Nation = NameSplit(2), Key .Vehicle = NameSplit(3), Key .Map = NameSplit(4) + " " + NameSplit(5)})
    6. Next


    Hoffe ihr könnt mir hier helfen :)

    *Codes formatiert*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    das ist sehr ungewöhnlich, dass ein Datum als 20140213 angezeigt wird. Ich fürchte, das ist gar kein Date, sondern ein String.
    Ein Date kann man mittels der Binding.StringFormat - Property formatieren, einen String nicht - weil der ist ja schon formatiert (doch, auch einen String kann man noch weiterformatieren, aber er hat eben nicht mehr die Möglichkeiten, die der Datentyp Date hat).
    Vorrangig wäre also wohl die Datenklasse in Ordnung zu bringen: die Property Date kommt weg, und die Property Time erhält Datentyp DateTime, denn ein DateTime beinhaltet - wie der Name sagt - bereits beides.

    Benutzst du eiglich Binding-Picking im Xaml-Editor oder wurstelst du dich mit händischen Bindings durch?
    Doch, 20140213 ist ein Datum.
    Ein kleines Beispiel:

    C-Quellcode

    1. using System;
    2. using System.Globalization;
    3. public class Program
    4. {
    5. public static void Main()
    6. {
    7. Console.WriteLine("{0:yyyy-MM-dd}", DateTime.ParseExact("20140213", "yyyyMMdd", CultureInfo.InvariantCulture));
    8. }
    9. }


    Wenn du nun listview.Items.Add(New With {Key .Date = DateTime.ParseExact(NameSplit(0), "yyyyMMdd", CultureInfo.InvariantCulture)}) nutzt, wird es funktionieren.
    Allerdings solltest du darauf achten, dass deine Datentypen korrekt sind.
    Zudem kannst du es dir einfach machen: Der Datentyp heißt nicht umsonst DateTime. Da du eh ein zerstörtes Format hast, kannst du gleich DateTime.ParseExact(NameSplit(0) & "T" & NameSplit(1), "yyyyMMddTHHmm", CultureInfo.InvariantCulture) nehmen.
    Fürs Binding kannst du dann wieder gucken, wie du es anzeigst.

    ErfinderDesRades schrieb:

    das ist sehr ungewöhnlich, dass ein Datum als 20140213 angezeigt wird. Ich fürchte, das ist gar kein Date, sondern ein String.
    Ein Date kann man mittels der Binding.StringFormat - Property formatieren, einen String nicht - weil der ist ja schon formatiert (doch, auch einen String kann man noch weiterformatieren, aber er hat eben nicht mehr die Möglichkeiten, die der Datentyp Date hat).
    Vorrangig wäre also wohl die Datenklasse in Ordnung zu bringen: die Property Date kommt weg, und die Property Time erhält Datentyp DateTime, denn ein DateTime beinhaltet - wie der Name sagt - bereits beides.

    Benutzst du eiglich Binding-Picking im Xaml-Editor oder wurstelst du dich mit händischen Bindings durch?

    Die Dateien welche ich in der listbox angezeigt haben Möchte werden leider so generiert. bsp: 20140213_1536_... -> 13.02.2014 - 15:36Uhr - ...

    AliveDevil schrieb:

    Doch, 20140213 ist ein Datum.
    Ein kleines Beispiel:

    C-Quellcode

    1. using System;
    2. using System.Globalization;
    3. public class Program
    4. {
    5. public static void Main()
    6. {
    7. Console.WriteLine("{0:yyyy-MM-dd}", DateTime.ParseExact("20140213", "yyyyMMdd", CultureInfo.InvariantCulture));
    8. }
    9. }


    Wenn du nun listview.Items.Add(New With {Key .Date = DateTime.ParseExact(NameSplit(0), "yyyyMMdd", CultureInfo.InvariantCulture)}) nutzt, wird es funktionieren.
    Allerdings solltest du darauf achten, dass deine Datentypen korrekt sind.
    Zudem kannst du es dir einfach machen: Der Datentyp heißt nicht umsonst DateTime. Da du eh ein zerstörtes Format hast, kannst du gleich DateTime.ParseExact(NameSplit(0) & "T" & NameSplit(1), "yyyyMMddTHHmm", CultureInfo.InvariantCulture) nehmen.
    Fürs Binding kannst du dann wieder gucken, wie du es anzeigst.

    Habe es nun so hin bekommen. Danke :)