假设我正确理解了您想要的内容,我相信简短的回答是:对不起,但无法仅使用 XAML 将 Google-Maps 样式的信息框添加到图钉。但是,如果可以的话,我会尽力提供帮助。
免责声明:我一直在使用 Silverlight 的 Bing 地图控件,因此希望这也适用于 WPF 版本的控件。
我想您不想使用内置工具提示,因为您希望它看起来不同(即不仅仅是一个带有文本的黄色框),或者因为您希望它在用户移开鼠标时不会消失。
如果你只是想让它看起来不同,我可以提供以下内容。当我为我的图钉指定模板时,我继续使用重新模板化的工具提示,并允许用户单击图钉以获取更多信息。

这是 ToolTip 模板,定义为 StaticResource,当然可以包含您想要的任何内容:
<Style x:Key="MyToolTipStyle" TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border CornerRadius="5" BorderBrush="Black" BorderThickness="2" Background="#5c87b2">
<ContentPresenter Margin="5">
<ContentPresenter.Content>
<StackPanel Margin="5" MaxWidth="400">
<TextBlock Text="{Binding Name}" FontWeight="Bold" FontSize="16" Foreground="White" TextWrapping="Wrap"/>
<TextBlock Text="{Binding Description}" Foreground="White" TextWrapping="Wrap"/>
</StackPanel>
</ContentPresenter.Content>
</ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是我使用它的地方:
<maps:Map>
<maps:MapItemsControl ItemsSource="{Binding SearchResultsManager.Items}">
<maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<maps:Pushpin Location="{Binding Location}" Cursor="Hand" MouseLeftButtonUp="Pushpin_MouseLeftButtonUp">
<ToolTipService.ToolTip>
<ToolTip Style="{StaticResource MyToolTipStyle}" />
</ToolTipService.ToolTip>
</maps:Pushpin>
</DataTemplate>
</maps:MapItemsControl.ItemTemplate>
</maps:MapItemsControl>
</maps:Map>
然后,当用户单击图钉将他们带到详细信息区域时,我会处理。
private void Pushpin_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
// Get a reference to the object that was clicked.
var clickedSearchResult = (sender as FrameworkElement).DataContext as SearchResultViewModel;
// Do something with it.
}
但是,我想您想防止 ToolTip 消失,以便用户可以单击其中的控件。不幸的是,我不确定是否有一种简单的方法可以做到这一点。您可能必须定义自己的自定义控件,这当然需要一些 C#/VB 代码。
也许这个新控件可以派生自图钉,它可以在鼠标悬停和/或单击时显示信息框内容。您可以使用 VisualStateManager 将大部分代码保留在 XAML 中。C#/VB 只需要为内容提供依赖属性和一些覆盖,以便在正确的时间在视觉状态之间进行转换。
我希望这至少有点帮助!