VSIX:在ToolWindow中使用ToolBar

时间:2011-05-29 21:44:48

标签: wpf visual-studio-2010 vsix

在Visual Studio扩展包中我想创建一个ToolWindow(如解决方案资源管理器是一个ToolWindow)并在此工具窗口中使用工具栏(如解决方案资源管理器拥有自己的工具栏,其中包含'显示所有文件''刷新'等等)。

See Screenshot

如果我的ToolWindow处于活动状态,则工具栏上的命令会显示工具提示。如果任何其他工具窗口处于活动状态,则不会显示它们。

但是在解决方案资源管理器中,无论ToolWindow是否处于活动状态,都会显示工具提示。

点击工具栏项也是如此。即使解决方案资源管理器不是活动的ToolWindow,也可以单击一下SolutionExplorer工具栏项。

如果我的ToolWindow不是活动的ToolWindow,则第一次单击会激活我的ToolWindow,只有第二次单击才会单击该按钮。

是否有人知道如何在自定义ToolWindows中实现解决方案资源管理器行为?

由于 -M。

<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 个答案:

答案 0 :(得分:2)

那是因为您正在创建WPF工具栏,而不是本机Visual Studio工具栏(通过VSCT文件完成)。

查看this sample演示如何托管放置在其中的Visual Studio命令的“本机”工具栏。这是在工具窗口中在Visual Studio中创建新命令或重用现有命令的推荐方法。这也允许用户自定义命令并指定自己的键绑定。