WPF Bing地图中的信息框

WPF Bing地图中的信息框,wpf,xaml,bing-maps,pushpin,Wpf,Xaml,Bing Maps,Pushpin,我最近开始在WPF中做一些事情,我想出了一个将地图集成到我的应用程序中的想法。我用谷歌地图尝试了一些东西,但是功能不是很好,所以过了一段时间,我放弃了WPF中的谷歌地图 过了一会儿,我碰到了Bing地图。这看起来比谷歌地图更有希望与WPF一起使用。我已经开始玩Bing的地图了,它的功能非常棒 然而,当我试图在地图上放置图钉时,当我将鼠标悬停在图钉上时,我并不清楚如何将信息框添加到图钉上。我已经找到了一些这样做的示例,但它需要链接到xaml的过程代码。我实际上在寻找一种不使用过程代码的方法 是否可

我最近开始在WPF中做一些事情,我想出了一个将地图集成到我的应用程序中的想法。我用谷歌地图尝试了一些东西,但是功能不是很好,所以过了一段时间,我放弃了WPF中的谷歌地图

过了一会儿,我碰到了Bing地图。这看起来比谷歌地图更有希望与WPF一起使用。我已经开始玩Bing的地图了,它的功能非常棒

然而,当我试图在地图上放置图钉时,当我将鼠标悬停在图钉上时,我并不清楚如何将信息框添加到图钉上。我已经找到了一些这样做的示例,但它需要链接到xaml的过程代码。我实际上在寻找一种不使用过程代码的方法

是否可以只使用xaml将信息框添加到图钉中?或者有没有人有一个很好的替代方法


虽然有一个工具提示属性可用,但我并没有真正寻找它。事实上,我一直在寻找谷歌地图的图钉样式(如果有的话)。

假设我正确理解您的需求,我相信简短的回答是:抱歉,但不可能仅用XAML将谷歌地图样式信息框添加到图钉中。不过,如果可以的话,我会尽力帮忙

免责声明:我一直在为Silverlight使用Bing地图控件,所以希望这也适用于该控件的WPF版本

我想你不想使用内置的工具提示,要么是因为你想让它看起来不一样(即不仅仅是一个带有文本的黄色框),要么是因为你想让它在用户移开鼠标时不消失

如果你只是想让它看起来不一样,我可以提供以下内容。当我为图钉指定模板时,我继续使用重新模板化的工具提示,并允许用户单击图钉以获取更多信息

这里是工具提示模板,定义为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>
但是,我认为您希望避免工具提示消失,以便用户可以单击其中的控件。不幸的是,我不确定有什么简单的方法可以做到这一点。您可能必须定义自己的自定义控件,这当然需要一些C#/VB代码

也许这个新控件可以从图钉中派生出来,它可以在鼠标上方和/或单击时显示信息框内容。您可以使用VisualStateManager将大部分代码保存在XAML中。C#/VB只需为内容提供一个依赖属性,并提供一些覆盖,以便在正确的时间在视觉状态之间转换


我希望这至少有一点帮助

这解释了很多,谢谢!我一直在寻找和尝试各种各样的东西,以使该信息框在仅仅WPF。。哈哈,谢谢你的信息!你的方法似乎是最好的方法。谢谢!:)
<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.
}