예제 #1
0
        private async Task <FolderItem> CreateFolderWithSelectedAsParentAsync(string name)
        {
            try
            {
                var folderItem = await FolderItem.GetNew(name);

                if (GetSelectedFolder() != null)
                {
                    try
                    {
                        await folderItem.SetParentAsync(GetSelectedFolder());
                    }
                    catch (Exception exception)
                    {
                        var messageDialog = new MessageDialog("Error setting folder parent: " + exception.Message);
                        messageDialog.Commands.Add(new UICommand("Close"));
                        messageDialog.DefaultCommandIndex = 0;
                        messageDialog.CancelCommandIndex  = 0;
                        await messageDialog.ShowAsync();

                        await folderItem.DeleteAsync();

                        return(null);
                    }
                }

                var newNode = new WinUI.TreeViewNode()
                {
                    Content = folderItem
                };

                if (GetSelectedNode() != null)
                {
                    GetSelectedNode().Children.Add(newNode);
                    treeView.Expand(GetSelectedNode());
                }
                else
                {
                    treeView.RootNodes.Add(newNode);
                }

                SelectNode(newNode);
                await Task.Delay(100);

                var container = treeView.ContainerFromNode(newNode);

                if (container != null)
                {
                    var tvi = container as WinUI.TreeViewItem;
                    (tvi?.Content as EditableTextBlock)?.EnableEditMode();
                }

                return(folderItem);
            }
            catch (Exception exception)
            {
                var messageDialog = new MessageDialog("Error: " + exception.Message);
                messageDialog.Commands.Add(new UICommand("Close"));
                messageDialog.DefaultCommandIndex = 0;
                messageDialog.CancelCommandIndex  = 0;
                await messageDialog.ShowAsync();

                return(null);
            }
        }