1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
namespace WpfApplication1
{
class MainViewModel : INotifyPropertyChanged
{
#region INotifyPropertyChanged Implementation
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
string _path;
bool _allDirectories;
public string Path
{
get { return _path; }
set
{
if (value != _path)
{
_path = value;
RefreshExecutableFiles();
OnPropertyChanged("Path");
}
}
}
public bool AllDirectories
{
get { return _allDirectories; }
set
{
if (value != _allDirectories)
{
_allDirectories = value;
RefreshExecutableFiles();
OnPropertyChanged("AllDirectories");
}
}
}
public ObservableCollection<ExecutableFile> ExecutableFiles { get; private set; }
public MainViewModel()
{
ExecutableFiles = new ObservableCollection<ExecutableFile>();
Path = Environment.CurrentDirectory;
}
void RefreshExecutableFiles()
{
try
{
ExecutableFiles.Clear();
foreach (var file in Directory.GetFiles(Path, "*.exe",
AllDirectories
? SearchOption.AllDirectories
: SearchOption.TopDirectoryOnly))
{
ExecutableFiles.Add(new ExecutableFile(file));
}
}
catch
{
}
}
public void Show()
{
new MainWindow { DataContext = this }
.Show();
}
}
} |
Partager