using FileManager_UWP.Model; using FileManager_UWP.Service; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using Windows.Storage; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Input; namespace FileManager_UWP.ViewModel { public class FileListViewModel : ViewModelBase { /// /// 当前路径 /// private string _path = "C:\\"; public string Path { get => _path; set => Set(nameof(Path), ref _path, value); } /// /// 文件和文件夹列表 /// private IEnumerable _displayFileFolderItems; public IEnumerable DisplayFileFolderItems { get => _displayFileFolderItems; set => Set(nameof(DisplayFileFolderItems), ref _displayFileFolderItems, value); } private string _debugText; public string DebugText { get => _debugText; set => Set(nameof(DebugText), ref _debugText, value); } /// /// 刷新命令 /// private RelayCommand _refreshCommand; public RelayCommand RefreshCommand => _refreshCommand ?? (_refreshCommand = new RelayCommand(async () => { var fileService = new FileService(); var fileList = await fileService.GetDisplayFileFolderList(Path); DisplayFileFolderItems = fileList; })); private object _listSelectedItem; public object ListSelectedItem { get => _listSelectedItem; set { Set(nameof(ListSelectedItem), ref _listSelectedItem, value); } } private List _listSelectedItems; public List ListSelectedItems { get => _listSelectedItems; set { Debug.WriteLine("Select " + ((DisplayFileFolderItem)ListSelectedItems[0]).Name); Set(nameof(ListSelectedItems), ref _listSelectedItems, value); } } public void HandleDoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { DisplayFileFolderItem i = ListSelectedItem as DisplayFileFolderItem; Debug.WriteLine("Double tapped"); if (i != null && i.IsFolder) { Debug.WriteLine("double tapped: " + i.Name); Path = i.Path; RefreshCommand.Execute(null); } } public void ListViewBase_OnItemClick(object sender, ItemClickEventArgs e) { DisplayFileFolderItem i = e.ClickedItem as DisplayFileFolderItem; Debug.WriteLine("Clicked"); if (i != null && i.IsFolder) { Debug.WriteLine("Clicked: " + i.Name); Path = i.Path; RefreshCommand.Execute(null); } } } }