public FileBrowserPage()
 {
     InitializeComponent();
     BindingContext          = viewModel = new FileBrowserViewModel();
     listView.RefreshCommand = new Command(async() =>
     {
         await viewModel.UpdateDirectory();
         listView.IsRefreshing = false;
     });
 }
        private async void listView_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            CtFileItem item = (CtFileItem)e.Item;

            if (item.Name == "/")
            {
                await viewModel.BackDirectory();
            }
            else
            {
                if (item.IsDirectory)
                {
                    string[] menus   = new string[] { "열기", "이름 바꾸기", "삭제" };
                    string   select1 = await DisplayActionSheet(item.Name, "취소", null, menus);

                    switch (select1)
                    {
                    case "열기":
                        await viewModel.MoveDirectory(item.Name);

                        break;

                    case "이름 바꾸기":
                        renameMode           = true;
                        renameFolder         = item;
                        foldernameentry.Text = item.Name;
                        overlay.IsVisible    = true;
                        break;

                    case "삭제":
                        if (await DisplayAlert("알림", "폴더를 지우시겠습니까?", "확인", "취소"))
                        {
                            var number = await viewModel.GetSubItemNumber(item);

                            if (0 < number)
                            {
                                if (await DisplayAlert("알림", $"{number}개의 하위항목이 존재합니다. 정말로 폴더를 지우시겠습니까?", "확인", "취소"))
                                {
                                    viewModel.DeleteFolder(item);
                                    await viewModel.UpdateDirectory();
                                }
                            }
                            else if (number < 0)
                            {
                                await DisplayAlert("알림", "오류 발생", "확인");
                            }
                            else
                            {
                                viewModel.DeleteFolder(item);
                                await viewModel.UpdateDirectory();
                            }
                        }
                        else
                        {
                            return;
                        }
                        break;
                    }
                }
                else
                {
                    string[] menus   = new string[] { "열기", "삭제" };
                    string   select1 = await DisplayActionSheet(item.Name, "취소", null, menus);

                    switch (select1)
                    {
                    case "열기":
                        viewModel.OpenFile(item);
                        break;

                    case "삭제":
                        if (await DisplayAlert("알림", "파일을 지우시겠습니까?", "확인", "취소"))
                        {
                            viewModel.DeleteFile(item);
                            await viewModel.UpdateDirectory();
                        }
                        else
                        {
                            return;
                        }
                        break;
                    }
                }
            }
        }