Bing Maps에서 사용할 템플릿을 디자인하려고합니다. 기본 템플릿으로 시작하여 약간의 비트를 찢어 내고 비트를 몇 개 더 추가했습니다.하지만 조금 복잡합니다.WPF 컨트롤 템플릿을 디자인하는 지원
내가 달성하고자하는 것은 푸시 핀으로 각 측면에서 나온 정보가 더 많은 정보를 삽입 할 수있는 툴팁 인 것처럼 보이지만 (실제로는 툴팁이 아니지만 바인딩 속성을 기반으로 영구적으로 표시됩니다). 뭔가 같은 ...
당신이 볼 수 있듯이, 나는 예술가의 많은하지 오전 정말 멀리 못 했어!
누군가 도울 수 있습니까? 내가 원하는 것은 핀의 각면에있는 오렌지색 막대가 바인딩을 기반으로 텍스트를 포함 할 수 있다는 것입니다 (필요에 따라 막대가 커야합니다). 바인딩 (예 : 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>
은, 캔버스, 그리드 및 타원 (좋은 보는 비트) 원래 템플릿은 ... 내가 무엇을 생산하는 코드입니다. 나는 두 경로를 추가했다. 그러나 나는 그 안에 텍스트를 넣는 방법을 잃어 버렸다. (아마도 내가 어딘가에 넣을 수 있다면 문제없이 텍스트를 묶을 수있다.)
나는 이것이 약간의 질문이라고 알고있다. 그러나 조금 그래픽이고 나를 조금 앞으로 나아갈 수있는 누군가가 있습니다. 어떤 도움을 주시면 감사하겠습니다.