I am building a file explorer, I have a ListView that is bound to an ObservableCollection what I'm wanting is when someone click on the folder (A TreeView to the left) it populates the Listview and fill the correct File Information in the text blocks.
I have found this which helped me get to where I am. but I am still returning null in the text blocks. Thanks for the help!
I have a private string start_Path
Code to populate ListView:
private void load_ListView(string path)
{
var lv = File_List;
lv.Items.Clear();
var search_Directory = new DirectoryInfo(path);
var item = new ListViewItem();
try
{
foreach (var file in search_Directory.GetFiles())
{
lv.Items.Add(file);
}
}
catch (Exception ex)
{
}
}
private void frm_File_Directory_Loaded(object sender, RoutedEventArgs e)
{
ListDirectory(foldersItem, start_Path.ToString());
}
private void foldersItem_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
load_ListView( start_Path + "\\" + ((TreeViewItem)e.NewValue).Header.ToString());
folder_Name = ((TreeViewItem)e.NewValue).Header.ToString();
this.DataContext = File_Info_data.get_Files(start_Path + "\\" + ((TreeViewItem)e.NewValue).Header.ToString());
}
ObservableCollection:
public static ObservableCollection<File_Information> get_Files(string path)
{
var temp = new ObservableCollection<File_Information>();
File_Information file;
FileInfo fileInfo = new FileInfo(path);
try
{
file = new File_Information
{
file_Size = fileInfo.Length,
date_Modified = fileInfo.LastWriteTime,
file_Type = get_File_Type(fileInfo.Extension)
};
temp.Add(file);
return temp;
}
catch (Exception ex) { }
return null;
}
public static string get_File_Type(string extension)
{
string ext_Name = null;
switch (extension)
{
case @"xlsx":
case "xlsm":
case "xls":
ext_Name = "Excel File";
break;
case "docx":
case "docm":
case "doc":
ext_Name = "Word Document";
break;
case "pdf":
ext_Name = "PDF Document";
break;
case "cad":
ext_Name = "CAD File";
break;
case "DWG":
ext_Name = "AutoCAD Drawing";
break;
case "jpg":
ext_Name = "JPEG image";
break;
default:
ext_Name = "Unknown File Type";
break;
}
return ext_Name;
}
xaml:
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Converter={StaticResource PathConverter}}"
Height="20"
Width="20"
Stretch="UniformToFill"
/>
<TextBlock x:Name="file_Name" Text="{Binding}" Width="300"></TextBlock>
<TextBlock x:Name="Date_Modified" Text="{Binding date_Modified}" Width="200"></TextBlock>
<TextBlock x:Name="File_Type" Text="{Binding file_Type}" Width="150"></TextBlock>
<TextBlock x:Name="File_Size" Text="{Binding file_Size}" Width="150"></TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>