四.如何新建一个Visual Studio ToolBox

2020-01-09  本文已影响0人  dududuwei

四.如何新建一个Visual Studio ToolBox

4.1 添加一个ToolBox

SolidWorksToolBox.png

4.2 添加视图

ToolWindowFile.png

SolidWorksToolBox.cs 负责承载一个WPF用户控件;
SolidWorksToolBoxCommand 负责响应用户命令;
和ApiHelpCommand一样,我们再DuSolidWorksToolsPackage.cs中的InitializeAsync方法中可以看到SolidWorksToolBoxCommand被初始化

await SolidWorksToolBoxCommand.InitializeAsync(this);
XamlFile.png

这个用户控件便是我们新建的ToolBox的界面,此项目使用了MVVM.light控件来实现MVVM模式.为了实现第一节描述的功能,我建立了如下的目录结构

MVVM.png

具体的实现可以访问我们的项目去查看.

4.3 实现Visual Studio 弹出式窗口

虽然可以新建一个WPF项目,使用一个Window类型的窗口来实现弹出.但推荐使用BaseDialogWindow来托管一个用户控件来实现弹出窗口.

using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudio.PlatformUI;

namespace DuSolidWorksTools.View
{
    public class BaseDialogWindow  : DialogWindow
    {
        private IVsUIShell shell;
        public BaseDialogWindow()
        {
            this.HasMaximizeButton = true;
            this.HasMinimizeButton = true;
        }
    }
}
<local:BaseDialogWindow x:Class="DuSolidWorksTools.View.ReferenceManagerView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:DuSolidWorksTools.View"
                          xmlns:vsshell="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.15.0"
               Background="{DynamicResource {x:Static vsshell:VsBrushes.WindowKey}}"
            Foreground="{DynamicResource {x:Static vsshell:VsBrushes.WindowTextKey}}"
             xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns:wpfTool="http://schemas.xceed.com/wpf/xaml/toolkit"
    xmlns:res ="clr-namespace:DuSolidWorksTools.Resources"
           Title="{x:Static res:Lang.RefManager_Title}"  mc:Ignorable="d" MinHeight="500" MinWidth="800"
             >
        <Grid>
        </Grid>
</local:BaseDialogWindow>

将 *.xaml.cs 中继承UserControl的类更改为继承BaseDialogWindow

 public partial class ReferenceManagerView : BaseDialogWindow
 {
        public ReferenceManagerView()
        {
            InitializeComponent();
        }
 }

这样的我们就可以获得一个点击按钮然后弹出的窗口,并且使用弹出窗口的ShowModal()方法后,在窗口弹出时操作Visual Studio可以获取VS任务栏的红色禁止提醒和窗口抖动提醒.

DuSolidWorksTools.View.ReferenceManagerView referenceManager = new DuSolidWorksTools.View.ReferenceManagerView();
referenceManager.ShowModal();

--

PopUpWindow.png
上一篇下一篇

猜你喜欢

热点阅读