내가 원하는 것을 정확하게 이해한다고 가정하면 짧은 대답입니다. 죄송 합니다만 XAML만으로 압정에 Google지도 스타일 정보 상자를 추가 할 수는 없습니다. 그러나 가능한 한 도와 드리겠습니다.
면책 조항 : 저는 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 코드가 필요합니다.
아마도이 새 컨트롤은 Pushpin에서 파생 될 수 있으며 마우스 오버 및/또는 클릭시 정보 상자 내용을 표시 할 수 있습니다. VisualStateManager를 사용하여 대부분의 코드를 XAML에 보관할 수 있습니다. C#/VB는 콘텐츠에 대한 종속성 속성을 제공하고 시각적 상태를 올바른 시간에 전환하기위한 몇 가지 재정의를 제공해야합니다.
적어도 조금 도움이 되었길 바랍니다.
많은 설명을 해주셔서 감사합니다! 나는 WPF에서 그 infobox를 만들기 위해 온갖 종류의 것들을보고 노력했다. Hahah는 정보에 감사한다! 당신은 방법이 가장 좋은 방법 인 것처럼 보입니다. 고맙습니다! :) – doc92