I have a ListView that shows me .txt files in a specific folder. I want the ListView to update automatically as soon as a file is added (or deleted) to that folder. I found the FileSystemWatcher class on the Internet, but I can't get the program to run properly. Anyone have any tips? I'm fairly new to C# programming.
My XAML Code:
<ScrollViewer Grid.Row="1" Grid.ColumnSpan="2" DockPanel.Dock="Top">
<ListView x:Name="TxtListView" SelectionMode="Multiple">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding .}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn/>
<GridViewColumn/>
<GridViewColumn/>
<GridViewColumn/>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</ScrollViewer>
Code-Behind:
public partial class MainWindow : Window
{
public string path = @"C:\txt";
public MainWindow()
{
InitializeComponent();
//Read txt Files
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] txtFiles = d.GetFiles();
TxtListView.ItemsSource = txtFiles;
MonitorDirectory(path);
}
public void MonitorDirectory(string path)
{
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
fileSystemWatcher.Path = path;
fileSystemWatcher.Created += FileSystemWatcher_Created;
fileSystemWatcher.EnableRaisingEvents = true;
}
private void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] txtFiles = d.GetFiles();
TxtListView.ItemsSource = txtFiles;
}
//Refresh-Button
private void Refresh(object sender, RoutedEventArgs e)
{
DirectoryInfo d = new DirectoryInfo(path);
FileInfo[] txtFiles = d.GetFiles();
TxtListView.ItemsSource = txtFiles;
}
}