VSIX: используйте панель инструментов в окне инструментов - PullRequest
1 голос
/ 30 мая 2011

в пакете расширений Visual Studio. Я хочу создать ToolWindow (например, Solution Explorer - это ToolWindow) и использовать панель инструментов в этом окне инструментов (например, Solution Explorer имеет свою собственную панель инструментов с «Показать все файлы», «Обновить» и т. Д.). ).

См. Снимок экрана

Если мое ToolWindow активно всплывающие подсказки отображаются для команд на панели инструментов. Они не отображаются, если активно какое-либо другое окно инструментов.

В обозревателе решений, однако, всплывающие подсказки отображаются независимо от активного окна инструментов.

То же самое верно для щелчка по элементу панели инструментов . Элемент панели инструментов SolutionExplorer можно щелкнуть одним щелчком мыши, даже если обозреватель решений не является активным ToolWindow.

Если мое ToolWindow не является активным ToolWindow, первый щелчок активирует мое ToolWindow, и только второй щелчок нажимает кнопку.

Кто-нибудь знает, как реализовать поведение, подобное поведению Solution Explorer, в пользовательских ToolWindows?

Спасибо -М.

<UserControl x:Class="mklein.TestToolWindow" 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:vsfx="clr-namespace:Microsoft.VisualStudio.Shell;assembly=Microsoft.VisualStudio.Shell.10.0" mc:Ignorable="d"
             d:DesignHeight="300" d:DesignWidth="300" Name="MyToolWindow"
             Background="{DynamicResource {x:Static vsfx:VsBrushes.ToolWindowBackgroundKey}}" >

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>

        <ToolBar Grid.Row="0"  Background="{DynamicResource {x:Static vsfx:VsBrushes.CommandBarGradientKey}}">
            <ToolBar.Items>
                <Button Command="SaveAs" ToolTip="Save new">
                    <Image Source="resources\add.png" />
                </Button>
                <!-- ... -->
            </ToolBar.Items>
        </ToolBar>

        <ListBox Grid.Row="1" x:Name="ListboxSettings"                   
                     ItemsSource="{Binding}" 
                     IsSynchronizedWithCurrentItem="True" 
                     MouseDoubleClick="ListBox_MouseDoubleClick">

        </ListBox>
    </Grid>
</UserControl>

1 Ответ

2 голосов
/ 30 мая 2011

Это потому, что вы создаете панель инструментов WPF, а не нативную панель инструментов Visual Studio (что делается с помощью файла VSCT).

Взгляните на этот пример , демонстрирующий, как разместить «собственную» панель инструментов с размещенными в ней командами Visual Studio. Это рекомендуемый способ создания новых команд или повторного использования существующих команд в Visual Studio в вашем окне инструментов. Это также позволяет пользователю настраивать команды и указывать их собственные сочетания клавиш.

...