示例#1
0
        public DirectoryTree()
        {
            InitializeComponent();
            if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
                return;

            DataContext = RootModel = new DirectoryTreeViewModel();
            RootModel.RootDirectory = DirectoryInfoEx.DesktopDirectory;
            Commands = new DirectoryTreeCommands(this, RootModel);

            RootModel.OnProgress += (ProgressEventHandler)delegate(object sender, ProgressEventArgs e)
            {
                this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new ThreadStart(delegate
                {
                    RaiseEvent(new ProgressRoutedEventArgs(ProgressEvent, e));
                }));
            };

            W7TreeViewItemUtils.SetIsEnabled(this, true);

            #region Selection
            this.AddHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(
                (RoutedEventHandler)delegate(object obj, RoutedEventArgs args)
                {
                    if (SelectedValue is DirectoryTreeItemViewModel)
                    {
                        DirectoryTreeItemViewModel selectedModel = SelectedValue as DirectoryTreeItemViewModel;
                        SelectedDirectory = selectedModel.EmbeddedDirectoryModel.EmbeddedDirectoryEntry;
                        if (args.OriginalSource is TreeViewItem)
                            (args.OriginalSource as TreeViewItem).BringIntoView();

                        _lastSelectedContainer = (args.OriginalSource as TreeViewItem);
                    }
                }));

            //this.SelectedDirectoryPath <---> this.SelectedDirectory
            Binding selectedDirectoryPathBinding = new Binding("SelectedDirectory");
            selectedDirectoryPathBinding.Mode = BindingMode.TwoWay;
            selectedDirectoryPathBinding.Converter = new ExToStringConverter();
            selectedDirectoryPathBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            selectedDirectoryPathBinding.Source = this;
            this.SetBinding(DirectoryTree.SelectedDirectoryPathProperty, selectedDirectoryPathBinding);

            //this.SelectedDirectory <---> RootModel.SelectedDirectory
            Binding selectedDirectoryBinding = new Binding("SelectedDirectory");
            selectedDirectoryBinding.Mode = BindingMode.TwoWay;
            selectedDirectoryBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            selectedDirectoryBinding.Source = RootModel;
            this.SetBinding(DirectoryTree.SelectedDirectoryProperty, selectedDirectoryBinding);

            //this.AutoCollapse <---> RootModel.AutoCollapse
            Binding autoCollapseBinding = new Binding("AutoCollapse");
            autoCollapseBinding.Mode = BindingMode.OneWayToSource;
            autoCollapseBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            autoCollapseBinding.Source = RootModel;
            this.SetBinding(DirectoryTree.AutoCollapseProperty, autoCollapseBinding);
            #endregion

            #region ContextMenuWrapper - Obsoluted
            //_cmw = new ContextMenuWrapper();

            //this.AddHandler(TreeViewItem.MouseRightButtonUpEvent, new MouseButtonEventHandler(
            //    (MouseButtonEventHandler)delegate(object sender, MouseButtonEventArgs args)
            //    {
            //        if (SelectedValue is DirectoryTreeItemViewModel)
            //        {
            //            DirectoryTreeItemViewModel selectedModel = SelectedValue as DirectoryTreeItemViewModel;
            //            Point pt = this.PointToScreen(args.GetPosition(this));
            //            string command = _cmw.Popup(new FileSystemInfoEx[] { selectedModel.EmbeddedDirectoryModel.EmbeddedDirectoryEntry },
            //                new System.Drawing.Point((int)pt.X, (int)pt.Y));
            //            switch (command)
            //            {
            //                case "rename":
            //                    if (this.SelectedValue != null)
            //                    {
            //                        if (_lastSelectedContainer != null)
            //                        {
            //                            SetIsEditing(_lastSelectedContainer, true);
            //                        }
            //                    }
            //                    break;
            //                case "refresh":
            //                    if (this.SelectedValue is DirectoryTreeItemViewModel)
            //                    {
            //                        (this.SelectedValue as DirectoryTreeItemViewModel).Refresh();
            //                    }
            //                    break;
            //            }
            //        }
            //    }));
            #endregion
        }
        public DirectoryTree()
        {
            InitializeComponent();
            if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
            {
                return;
            }

            DataContext             = RootModel = new DirectoryTreeViewModel();
            RootModel.RootDirectory = DirectoryInfoEx.DesktopDirectory;
            Commands = new DirectoryTreeCommands(this, RootModel);

            RootModel.OnProgress += (ProgressEventHandler) delegate(object sender, ProgressEventArgs e)
            {
                this.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new ThreadStart(delegate
                {
                    RaiseEvent(new ProgressRoutedEventArgs(ProgressEvent, e));
                }));
            };

            W7TreeViewItemUtils.SetIsEnabled(this, true);

            #region Selection
            this.AddHandler(TreeViewItem.SelectedEvent, new RoutedEventHandler(
                                (RoutedEventHandler) delegate(object obj, RoutedEventArgs args)
            {
                if (SelectedValue is DirectoryTreeItemViewModel)
                {
                    DirectoryTreeItemViewModel selectedModel = SelectedValue as DirectoryTreeItemViewModel;
                    SelectedDirectory = selectedModel.EmbeddedDirectoryModel.EmbeddedDirectoryEntry;
                    if (args.OriginalSource is TreeViewItem)
                    {
                        (args.OriginalSource as TreeViewItem).BringIntoView();
                    }

                    _lastSelectedContainer = (args.OriginalSource as TreeViewItem);
                }
            }));

            //this.SelectedDirectoryPath <---> this.SelectedDirectory
            Binding selectedDirectoryPathBinding = new Binding("SelectedDirectory");
            selectedDirectoryPathBinding.Mode                = BindingMode.TwoWay;
            selectedDirectoryPathBinding.Converter           = new ExToStringConverter();
            selectedDirectoryPathBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            selectedDirectoryPathBinding.Source              = this;
            this.SetBinding(DirectoryTree.SelectedDirectoryPathProperty, selectedDirectoryPathBinding);

            //this.SelectedDirectory <---> RootModel.SelectedDirectory
            Binding selectedDirectoryBinding = new Binding("SelectedDirectory");
            selectedDirectoryBinding.Mode = BindingMode.TwoWay;
            selectedDirectoryBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            selectedDirectoryBinding.Source = RootModel;
            this.SetBinding(DirectoryTree.SelectedDirectoryProperty, selectedDirectoryBinding);

            //this.AutoCollapse <---> RootModel.AutoCollapse
            Binding autoCollapseBinding = new Binding("AutoCollapse");
            autoCollapseBinding.Mode = BindingMode.OneWayToSource;
            autoCollapseBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            autoCollapseBinding.Source = RootModel;
            this.SetBinding(DirectoryTree.AutoCollapseProperty, autoCollapseBinding);
            #endregion

            #region ContextMenuWrapper - Obsoluted
            //_cmw = new ContextMenuWrapper();

            //this.AddHandler(TreeViewItem.MouseRightButtonUpEvent, new MouseButtonEventHandler(
            //    (MouseButtonEventHandler)delegate(object sender, MouseButtonEventArgs args)
            //    {
            //        if (SelectedValue is DirectoryTreeItemViewModel)
            //        {
            //            DirectoryTreeItemViewModel selectedModel = SelectedValue as DirectoryTreeItemViewModel;
            //            Point pt = this.PointToScreen(args.GetPosition(this));
            //            string command = _cmw.Popup(new FileSystemInfoEx[] { selectedModel.EmbeddedDirectoryModel.EmbeddedDirectoryEntry },
            //                new System.Drawing.Point((int)pt.X, (int)pt.Y));
            //            switch (command)
            //            {
            //                case "rename":
            //                    if (this.SelectedValue != null)
            //                    {
            //                        if (_lastSelectedContainer != null)
            //                        {
            //                            SetIsEditing(_lastSelectedContainer, true);
            //                        }
            //                    }
            //                    break;
            //                case "refresh":
            //                    if (this.SelectedValue is DirectoryTreeItemViewModel)
            //                    {
            //                        (this.SelectedValue as DirectoryTreeItemViewModel).Refresh();
            //                    }
            //                    break;
            //            }
            //        }
            //    }));
            #endregion
        }