最近在做WPF项目,对wpf界面的listview进行数据绑定,并根据绑定行的数据属于的类型在listview的一列中用不同的图片进行区分。
好的,现在说一下具体使用步骤:
第一步,先定义要绑定列表需要的集合数据的类
public class FtpFileInformation
{
private bool isDirectory;
private string filename;
private string filetime;
private int filesize;
public bool IsDirectory
{
get { return isDirectory; }
set
{
isDirectory = value;
this.OnPropertyChanged(IsDirectory.ToString());
}
}
public string Filename
{
get { return filename; }
set
{
filename = value;
this.OnPropertyChanged(Filename);
}
}
public string Filetime
{
get { return filetime; }
set
{
filetime = value;
this.OnPropertyChanged(Filetime);
}
}
public int Filesize
{
get { return filesize; }
set
{
filesize = value;
this.OnPropertyChanged(Filesize.ToString());//这个一定要有,否则集合变化了,界面不能及时刷新。
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
第二步,定义要绑定的listview
rer_PreviewMouseDoubleClick" ItemsSource="{Binding}" DataContext="{Binding}">
//在列中区分显示的图片
//在列中区分显示的图片
第三步,在c#后台代码中绑定listview的源ObservableCollection ftpFileInformationn集合中
private ObservableCollection ftpFileInformation;//用于绑定ftp浏览文件目录和文件
ftpFileInformation=new ObservableCollection();
vFtpExplorer.ItemsSource = ftpFileInformation;
第四步,在后台代码中实现列属性区分显示的类
//区分显示文件和文件夹的图标类
public class ViewListTemplateSelector : DataTemplateSelector {
public DataTemplate FileItemTemplate { get; set; }
public DataTemplate FolderItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
FtpFileInformation data = item as FtpFileInformation;
return (data != null && data.IsDirectory ==true) ? FolderItemTemplate : FileItemTemplate;
}
}
第五步,现在就可以在listview 的的列中
根据绑定数据的FtpFileInformation 的IsDirectory 属性是TRUE和FALSE来在listview
的“文件类型”的列中不同行显示不同的图片。