#wpf #visual-studio-2010 #vsix
#wpf #visual-studio-2010 #vsix
Вопрос:
в пакете расширений Visual Studio я хочу создать окно инструментов (например, Solution Explorer — это окно инструментов) и использовать панель инструментов в этом окне инструментов (например, у Solution Explorer есть своя панель инструментов с ‘Показать все файлы’ ‘Обновить’ и многое другое).
Если мое окно инструментов активно, для команд на панели инструментов отображаются всплывающие подсказки. Они не отображаются, если активно любое другое окно инструмента.
Однако в Обозревателе решений всплывающие подсказки отображаются независимо от того, активно ли окно инструментов.
То же самое верно для нажатия на элемент панели инструментов. Элемент панели инструментов SolutionExplorer можно щелкнуть одним щелчком мыши, даже если обозреватель решений не является активным окном инструментов.
Если мое окно инструментов не является активным, первое нажатие активирует мое окно инструментов, и только второе нажатие приводит к нажатию кнопки.
Кто-нибудь знает, как реализовать поведение, подобное поведению Solution Explorers, в пользовательских окнах инструментов?
Спасибо -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="resourcesadd.png" />
</Button>
<!-- ... -->
</ToolBar.Items>
</ToolBar>
<ListBox Grid.Row="1" x:Name="ListboxSettings"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
MouseDoubleClick="ListBox_MouseDoubleClick">
</ListBox>
</Grid>
</UserControl>
Ответ №1:
Это потому, что вы создаете панель инструментов WPF, а не собственную панель инструментов Visual Studio (которая выполняется с помощью файла VSCT).
Взгляните на этот пример, демонстрирующий, как разместить «родную» панель инструментов с размещенными в ней командами Visual Studio. Это рекомендуемый способ создания новых команд или повторного использования существующих команд в Visual Studio в вашем toolwindow. Это также позволяет пользователю настраивать команды и указывать свои собственные привязки клавиш.