四.如何新建一个Visual Studio ToolBox
[九.发布Visual Studio 扩展]
四.如何新建一个Visual Studio ToolBox
4.1 添加一个ToolBox
-
我们要实现的是一个Visual Studio工具窗口,如下所示。
- 在解决方案管理器中的VSIX项目右击,添加 => 新建项 => Extensibility => Async Tool Window
4.2 添加视图
- 添加完成后我们获得了如下代码文件
SolidWorksToolBox.cs 负责承载一个WPF用户控件;
SolidWorksToolBoxCommand 负责响应用户命令;
和ApiHelpCommand一样,我们再DuSolidWorksToolsPackage.cs中的InitializeAsync方法中可以看到SolidWorksToolBoxCommand被初始化
await SolidWorksToolBoxCommand.InitializeAsync(this);
- 还有一个xaml的用户控件
这个用户控件便是我们新建的ToolBox的界面,此项目使用了MVVM.light控件来实现MVVM模式.为了实现第一节描述的功能,我建立了如下的目录结构
具体的实现可以访问我们的项目去查看.
4.3 实现Visual Studio 弹出式窗口
虽然可以新建一个WPF项目,使用一个Window类型的窗口来实现弹出.但推荐使用BaseDialogWindow来托管一个用户控件来实现弹出窗口.
- 1.新建一个名为BaseDialog的类
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;
}
}
}
- 2.新建一个用户控件,将用户控件的更改为Local:BaseDialogWindow
<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();
--