从VS扩展命令

时间:2016-04-27 10:07:51

标签: c# wpf visual-studio-extensions

我正在写第一个VS扩展程序。 到目前为止,我有代码来获取所选文本并显示一个消息框或操纵选择:

延伸的CTOR ..

        private StringRefactor(Package package)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            this.package = package;

            OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
            if (commandService != null)
            {
                var menuCommandID = new CommandID(CommandSet, CommandId);
                var menuItem = new MenuCommand(this.MenuItemCallback, menuCommandID);
                commandService.AddCommand(menuItem);
            }
        }

回调:

    private void MenuItemCallback(object sender, EventArgs e)
    {
        var selection = getSelection();

        var selectedText = selection == null ? "No text selected..." : selection.StreamSelectionSpan.GetText();
        string message = string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName);
        string title = "StringRefactor";

        // Show a message box to prove we were here
        VsShellUtilities.ShowMessageBox(
            this.ServiceProvider,
            selectedText,
            title,
            OLEMSGICON.OLEMSGICON_INFO,
            OLEMSGBUTTON.OLEMSGBUTTON_OK,
            OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
    }

现在而不是VsShellUtilities.ShowMessageBox(...我想打开一个显示多个文本框和ok \ cancel按钮的提示窗口。

我想创建另一个WPF应用程序项目并从回调中启动它,但我不确定这是编写打开自定义工具的扩展程序的正确方法..

那么用VISIX打开自定义窗口的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以在VSIX扩展中创建自己的WPF对话框。事实上,Visual Studio就是为此而设计的(因为UI是WPF)。

有关详细说明,请参阅此文章:

Creating and Managing Modal Dialog Boxes