2012-11-10 3 views
0

Bing Maps에서 사용할 템플릿을 디자인하려고합니다. 기본 템플릿으로 시작하여 약간의 비트를 찢어 내고 비트를 몇 개 더 추가했습니다.하지만 조금 복잡합니다.WPF 컨트롤 템플릿을 디자인하는 지원

내가 달성하고자하는 것은 푸시 핀으로 각 측면에서 나온 정보가 더 많은 정보를 삽입 할 수있는 툴팁 인 것처럼 보이지만 (실제로는 툴팁이 아니지만 바인딩 속성을 기반으로 영구적으로 표시됩니다). 뭔가 같은 ...

What I have so far

당신이 볼 수 있듯이, 나는 예술가의 많은하지 오전 정말 멀리 못 했어!

누군가 도울 수 있습니까? 내가 원하는 것은 핀의 각면에있는 오렌지색 막대가 바인딩을 기반으로 텍스트를 포함 할 수 있다는 것입니다 (필요에 따라 막대가 커야합니다). 바인딩 (예 : IsLeftTextVisible/IsRightTextVisible)에 따라 하나 또는 두 개의 막대를 숨길 수있는 반면 바인딩 된 필드에 텍스트가없는 경우에도 이름은 나중에 변경할 수 있습니다.

나는 또한 오렌지 바가 약간 더 좋을 것이라고 생각합니다. 하지만 누군가가 내가 텍스트를 표시 할 수있는 지점에 도달하도록 도울 수 있다면 (희망적으로) 거기에서 그것을 가져올 수 있어야합니다. 여기

는 수집 한대로

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"> 

    <ControlTemplate x:Key="PushpinTemplate" 
    TargetType="{x:Type m:Pushpin}"> 

    <Grid Grid.Name="LayoutRoot" 
     FrameworkElement.Height="{TemplateBinding FrameworkElement.Height}" 
     FrameworkElement.Width="{TemplateBinding FrameworkElement.Width}"> 

     <Canvas FrameworkElement.Height="35" 
     FrameworkElement.HorizontalAlignment="Left" 
     FrameworkElement.VerticalAlignment="Top" 
     FrameworkElement.Width="34"> 

     <Path x:Name="CollectionTextPath" 
      Fill="{TemplateBinding Background}" 
      Data="M 0,20 H100 V-20 H-0" 
      Canvas.Left="20" 
      Stretch="Fill" 
      Width="100" 
      Height="18.905" 
      Canvas.Top="3.19" 
      RenderTransformOrigin="0.5,0.5" > 

      <Path.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform ScaleX="1"/> 
       <SkewTransform/> 
       <RotateTransform/> 
       <TranslateTransform/> 
      </TransformGroup> 
      </Path.RenderTransform> 

     </Path> 

     <Path x:Name="DeliveryTextPath" 
      Fill="{TemplateBinding Background}" 
      Data="M 0,20 H100 V-20 H-0" 
      Canvas.Left="-81" 
      Stretch="Fill" 
      Width="100" 
      Height="18.905" 
      Canvas.Top="4.19" 
      RenderTransformOrigin="0.5,0.5" > 

      <Path.RenderTransform> 
      <TransformGroup> 
       <ScaleTransform ScaleX="-1"/> 
       <SkewTransform/> 
       <RotateTransform/> 
       <TranslateTransform/> 
      </TransformGroup> 
      </Path.RenderTransform> 

     </Path> 

     <Path x:Name="Path_0" 
      Stretch="Fill" 
      StrokeLineJoin="Round" 
      Stroke="#FF333333" 
      Fill="#FFFFFFFF" 
      Data="F1M13.25,0.50001502C20.2917,0.50001502 26,6.2083602 26,13.25 26,17.817347 23.598524,21.823648 19.989363,24.075348 18.67861,25.105957 17.863953,27.531982 17.863953,27.531982L13.21736,39.595642 8.6221838,27.528591C8.6221838,27.528591 7.8198605,25.084908 6.6245556,24.145586 2.952121,21.907652 0.5,17.865215 0.5,13.25 0.5,6.2083602 6.2083402,0.50001502 13.25,0.50001502z" 
      UseLayoutRounding="False" 
      Height="39.694" 
      Width="26" 
      Canvas.Left="8.282" 
      Canvas.Top="0.001" /> 

     <Ellipse Height="21" 
      Width="21" 
      Fill="{TemplateBinding Background}" 
      Canvas.Top="2.434" 
      HorizontalAlignment="Center" 
      VerticalAlignment="Center" 
      Canvas.Left="10.806" 
      Stroke="{x:Null}" /> 

     <Ellipse Height="18.905" 
      Width="18.905" 
      Canvas.Top="3.19" 
      Canvas.Left="11.911" 
      Stroke="{x:Null}"> 

      <Ellipse.Fill> 
      <LinearGradientBrush EndPoint="0.5,1" 
       StartPoint="0.5,0"> 
       <GradientStop Color="#00FFFFFF" 
       Offset="0.438" /> 
       <GradientStop Color="#6EFFFFFF" 
       Offset="0.987" /> 
      </LinearGradientBrush> 
      </Ellipse.Fill> 

     </Ellipse> 

     <UIElement.RenderTransform> 
      <TransformGroup> 
      <TranslateTransform TranslateTransform.X="-4" /> 
      </TransformGroup> 
     </UIElement.RenderTransform> 

     </Canvas> 

     <Grid FrameworkElement.HorizontalAlignment="Center" 
     FrameworkElement.VerticalAlignment="Top" 
     FrameworkElement.Margin="0,2,0,0" 
     FrameworkElement.Height="22" 
     FrameworkElement.Width="21"> 

     <ContentPresenter ContentPresenter.Content="{TemplateBinding ContentControl.Content}" 
      FrameworkElement.HorizontalAlignment="Center" 
      FrameworkElement.VerticalAlignment="Center" /> 

     </Grid> 

    </Grid> 

    </ControlTemplate> 

    <Style x:Key="{x:Type m:Pushpin}" 
    TargetType="{x:Type m:Pushpin}"> 
    <Setter Property="Template" 
     Value="{StaticResource PushpinTemplate}" /> 
    </Style> 

</ResourceDictionary> 

은, 캔버스, 그리드 및 타원 (좋은 보는 비트) 원래 템플릿은 ... 내가 무엇을 생산하는 코드입니다. 나는 두 경로를 추가했다. 그러나 나는 그 안에 텍스트를 넣는 방법을 잃어 버렸다. (아마도 내가 어딘가에 넣을 수 있다면 문제없이 텍스트를 묶을 수있다.)

나는 이것이 약간의 질문이라고 알고있다. 그러나 조금 그래픽이고 나를 조금 앞으로 나아갈 수있는 누군가가 있습니다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

나는 레이아웃을 충분히 확장했다.

관련 문제