四.如何新建一個Visual Studio ToolBox
[九.發(fā)布Visual Studio 擴(kuò)展]
四.如何新建一個Visual Studio ToolBox
4.1 添加一個ToolBox
-
?我們要實現(xiàn)的是一個Visual Studio工具窗口,如下所示缤苫。
AddinViewer.png
- 在解決方案管理器中的VSIX項目右擊速兔,添加 => 新建項 => Extensibility => Async Tool Window
SolidWorksToolBox.png
4.2 添加視圖
- 添加完成后我們獲得了如下代碼文件
ToolWindowFile.png
SolidWorksToolBox.cs 負(fù)責(zé)承載一個WPF用戶控件;
SolidWorksToolBoxCommand 負(fù)責(zé)響應(yīng)用戶命令;
和ApiHelpCommand一樣,我們再DuSolidWorksToolsPackage.cs中的InitializeAsync方法中可以看到SolidWorksToolBoxCommand被初始化
await SolidWorksToolBoxCommand.InitializeAsync(this);
- 還有一個xaml的用戶控件
XamlFile.png
這個用戶控件便是我們新建的ToolBox的界面,此項目使用了MVVM.light控件來實現(xiàn)MVVM模式.為了實現(xiàn)第一節(jié)描述的功能,我建立了如下的目錄結(jié)構(gòu)
MVVM.png
具體的實現(xiàn)可以訪問我們的項目去查看.
4.3 實現(xiàn)Visual Studio 彈出式窗口
雖然可以新建一個WPF項目,使用一個Window類型的窗口來實現(xiàn)彈出.但推薦使用BaseDialogWindow來托管一個用戶控件來實現(xiàn)彈出窗口.
- 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();
}
}
這樣的我們就可以獲得一個點(diǎn)擊按鈕然后彈出的窗口,并且使用彈出窗口的ShowModal()方法后,在窗口彈出時操作Visual Studio可以獲取VS任務(wù)欄的紅色禁止提醒和窗口抖動提醒.
DuSolidWorksTools.View.ReferenceManagerView referenceManager = new DuSolidWorksTools.View.ReferenceManagerView();
referenceManager.ShowModal();
--
PopUpWindow.png