2017-03-10 63 views
1

我添加了Bing地圖到我的UWP視圖。我創建了自定義的MapItemControl。 我想單擊我的引腳時顯示工具提示。UWP圖釘工具提示點擊

這裏是我做過什麼:

<my:MapControl Name="Map" Center="{Binding Location, Converter={StaticResource LocationToGeopoint}}" ZoomLevel="{Binding ZoomLevel}"> 
      <my:MapItemsControl ItemsSource="{Binding Offers}" > 
       <my:MapItemsControl.ItemTemplate> 
        <DataTemplate> 
         <StackPanel my:MapControl.NormalizedAnchorPoint="0.5,1" 
             my:MapControl.Location="{Binding Location, Converter={StaticResource LocationToGeopoint}}" 
             Width="Auto" Height="Auto" > 
          <Grid Height="25" Width="25" Name="ContentGrid"> 
           <Ellipse Fill="White" Height="Auto" Width="Auto" 
             Stroke="Red" 
             StrokeThickness="8"/> 
           <interactivity:Interaction.Behaviors> 
            <core:EventTriggerBehavior EventName="PointerPressed"> 
             <core:InvokeCommandAction 
              CommandParameter="{Binding Id}" 
              Command="{Binding ElementName=Map, Path=DataContext.PushpinTapped}" /> 
            </core:EventTriggerBehavior> 
           </interactivity:Interaction.Behaviors> 
          </Grid> 
          <Path Data="M33.4916,35.3059 L42.1937,35.3059 L38.1973,40.6036 z" Fill="Red" HorizontalAlignment="Center" Height="6.302" Margin="0,-1,0,0" Stretch="Fill" UseLayoutRounding="False" Width="9.702"/> 
          <ToolTip Style="{StaticResource MyToolTipStyle}"/> 
         </StackPanel> 
        </DataTemplate> 
       </my:MapItemsControl.ItemTemplate> 

      </my:MapItemsControl> 
     </my:MapControl> 

現在工具提示是可見的所有的時間。我怎樣才能讓它只有在點擊引腳時纔可見?

+0

Like [infobox](https://msdn.microsoft.com/en-us/library/mt750272.aspx)? –

回答

2

一種選項可使用ChangePropertyAction - 樣本:

<my:MapControl Name="Map" Center="{Binding Location, Converter={StaticResource LocationToGeopoint}}" ZoomLevel="{Binding ZoomLevel}"> 
    <my:MapItemsControl ItemsSource="{Binding Offers}" > 
     <my:MapItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel my:MapControl.NormalizedAnchorPoint="0.5,1" 
           my:MapControl.Location="{Binding Location, Converter={StaticResource LocationToGeopoint}}" 
           Width="Auto" Height="Auto" > 
        <Grid Height="25" Width="25" Name="ContentGrid"> 
         <Ellipse Fill="White" Height="Auto" Width="Auto" 
           Stroke="Red" 
           StrokeThickness="8"/> 
         <interactivity:Interaction.Behaviors> 
          <core:EventTriggerBehavior EventName="PointerPressed"> 
           <core:InvokeCommandAction 
             CommandParameter="{Binding Id}" 
             Command="{Binding ElementName=Map, Path=DataContext.PushpinTapped}" /> 
           <core:ChangePropertyAction TargetObject="{Binding ElementName=myTooltip}" 
             PropertyName="Visibility" Value="{Binding ElementName=myTooltip, Path=Visibility, Converter={StaticResource InvertConverter}}"/> 

          </core:EventTriggerBehavior> 
         </interactivity:Interaction.Behaviors> 
        </Grid> 
        <Path Data="M33.4916,35.3059 L42.1937,35.3059 L38.1973,40.6036 z" Fill="Red" HorizontalAlignment="Center" Height="6.302" Margin="0,-1,0,0" Stretch="Fill" UseLayoutRounding="False" Width="9.702"/> 
        <ToolTip x:Name="myTooltip" Style="{StaticResource MyToolTipStyle}" Visibility=Collapsed"/> 
       </StackPanel> 
      </DataTemplate> 
     </my:MapItemsControl.ItemTemplate> 
    </my:MapItemsControl> 
</my:MapControl> 

你只需要給你工具提示的名稱,它的可見性設置爲摺疊在啓動並定義一個轉換器,將使當前可見性的值相反,這樣一旦用戶再次點擊,工具提示就會消失。

+0

嘗試了相同的代碼,但忘記綁定TargetObject。無論如何,它的工作原理,但當出現工具提示時,Ellipse正在移動 – miechooy

+0

@miechooy可能是因爲StackPanel的寬度發生了變化,並且它變得中間變了。 – Romasz