So binden Sie eine Sammlung, um ein ListView WPF

Ich habe ein Programm, das sucht in einem Verzeichnis nach Dateien mit bestimmten Kriterien. Dieser such-Prozess dauert lange Zeit, also ich nenne es asynchron. Wenn der Suchalgorithmus eine Datei findet, löst er ein Ereignis aus. Meine MainWindow Instanz Listener für dieses Ereignis und muss zur Aktualisierung der GUI. Wie kann ich binden diese "zusätzlichen" Dateien zu einem ListView? Ich dachte, ich könnte eine ObservableCollection<FileInfo> Instanz, aber ich kann nicht herausfinden, wie es zu binden.

Habe ich entfernt, alle relevanten Steuerelemente und den code. Hier sind die beiden relevanten Dateien.

MainWindow.xaml:

<Window x:Class="Example.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="CR Search" Height="395" Width="525">
    <Grid>
        <ListView x:Name="Results">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Filename"/>
                    <GridViewColumn Header="Directory"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

MainWindow.xaml.cs:

using System.IO;
using System.Threading.Tasks;

public partial class MainWindow
{
    private SearchLogic _backgroundSearch;

    private async void Search(object sender, RoutedEventArgs e)
    {
        //TODO: clear Results

        _backgroundSearch = new SearchLogic("", new DirectoryInfo("C:\"));
        _backgroundSearch.FileAdded += FileAdded;

        await Task.Run(new Action(_backgroundSearch.Search));
    }

    private void FileAdded(object sender, FileAddedEventArgs eventArgs)
    {
        //TODO: add eventArgs.File to Results
        //eventArgs.File is an instance of FileInfo
    }
}
Schreibe einen Kommentar