在Visual Studio扩展包中我想创建一个ToolWindow(如解决方案资源管理器是一个ToolWindow)并在此工具窗口中使用工具栏(如解决方案资源管理器拥有自己的工具栏,其中包含'显示所有文件''刷新'等等)。
如果我的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>
答案 0 :(得分:2)
那是因为您正在创建WPF工具栏,而不是本机Visual Studio工具栏(通过VSCT文件完成)。
查看this sample演示如何托管放置在其中的Visual Studio命令的“本机”工具栏。这是在工具窗口中在Visual Studio中创建新命令或重用现有命令的推荐方法。这也允许用户自定义命令并指定自己的键绑定。