假設我正確你想要什麼瞭解,我認爲簡單的答案是:很抱歉,但它不可能對谷歌的-地圖式信息框添加到圖釘只用XAML。不過,如果可以的話,我會盡力提供幫助。
聲明:我一直在玩Silverlight的Bing Maps控件,所以希望這也適用於WPF版本的控件。
我想你不想使用內置的工具提示,因爲你希望它看起來不同(即不只是一個黃色的文本框),或者因爲你希望它不會消失,當用戶移動鼠標離開。
如果你只是想讓它看起來不同,我可以提供以下內容。當我爲我的圖釘指定模板時,我繼續使用重新模板化的工具提示,並允許用戶單擊圖釘以獲取更多信息。
這裏的工具提示模板,定義爲靜態資源,這當然可以包含任何你想要的:
<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.
}
但是,我想你想保持工具提示消失,以便用戶可以點擊它裏面的控件。不幸的是,我不確定有一個簡單的方法來做到這一點。您可能需要定義自己的自定義控件,這當然需要一些C#/ VB代碼。
也許這新的控制可以從圖釘派生,它可以顯示在鼠標懸停在信息框中的內容和/或點擊。您可以使用VisualStateManager將大部分代碼保留在XAML中。在C#/ VB將只需要提供內容和部分覆蓋在正確的時間可視狀態之間的過渡依賴屬性。
我希望這至少有點幫助!
這說明了很多,謝謝!我一直在尋找和嘗試各種各樣的事情,只是在WPF中做信息框..哈哈感謝信息!你的方法似乎是最好的選擇。謝謝! :) – doc92