【发布时间】:2015-08-03 21:20:23
【问题描述】:
我正在构建一个文件资源管理器,我有一个绑定到 ObservableCollection 的 ListView 我想要的是当有人单击文件夹(左侧的 TreeView)时,它会填充 Listview 并填写正确的文件信息文本块。
我找到了this,它帮助我到达了现在的位置。但我仍然在文本块中返回 null 。 感谢您的帮助!
我有一个private string start_Path
填充 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>
【问题讨论】:
-
什么和在哪里返回
null? -
View-model 中的集合属性在哪里?
-
我的文件名出现了,其余为空