我有一个Silverlight应用程序,显示道路上的汽车位置。
我正在使用MVVM模式,所以我将一个MapPosition集合到我的viewmodel中。
我也在使用外部SDK(来自ArcGIS)来完成我的绘图,因此限制是我需要绘制一个包含TemplateControl的Symbol对象,其中我可以放置任何我想要的东西。
问题是我没有找到一种方法将MapPosition对象(基本上只包含坐标和一些额外的信息)绑定到模板,我真的很糟糕,因为我有一些我真正需要绑定的属性,例如,更改图标的角度并显示工具提示。
这是我发现让它发挥作用的唯一方法,但我真的不喜欢它:
MarkerSymbol symbol = new MarkerSymbol();
string xamlTemplate = String.Format(@"
<ControlTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" >
<Grid Width=""200"" Height=""200"">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX=""0.1"" ScaleY=""0.1"" />
<RotateTransform Angle=""{0}"" CenterX=""10"" CenterY=""10"" />
</TransformGroup>
</Grid.RenderTransform>
<Canvas VerticalAlignment=""Top"" HorizontalAlignment=""Center"">
<ToolTipService.ToolTip>
<ToolTip Content=""{1}""></ToolTip>
</ToolTipService.ToolTip>
<Canvas.RenderTransform>
<TranslateTransform X=""-50""/>
</Canvas.RenderTransform>
<Path Data=""F1 M 49.75,0L 0,200L 50,158.5L 100,200L 49.75,0 Z"" Fill=""#FF008F00"" Stroke=""Black""></Path>
</Canvas>
</Grid>
</ControlTemplate>", value.Course, value.ToolTip);
ControlTemplate template = new ControlTemplate();
boatSymbol.ControlTemplate = (ControlTemplate)XamlReader.Load(xamlTemplate);
然后我循环浏览列表中的每个元素并动态创建模板。
所以问题是:在我的集合的每个对象上绑定模板的正确方法是什么,并且在xaml中有模板而不是在我的代码隐藏中有一个丑陋的字符串?
非常感谢你的帮助!
答案 0 :(得分:0)
<BoatSymbol.ControlTemplate>
<ControlTemplate>
<Grid Width="200" Height="200">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="0.1" ScaleY="0.1" />
<RotateTransform Angle="{Binding Angle}" CenterX="10" CenterY="10" />
</TransformGroup>
</Grid.RenderTransform>
<Canvas VerticalAlignment="Top" HorizontalAlignment="Center">
<ToolTipService.ToolTip>
<ToolTip Content="{Binding Course}"></ToolTip>
</ToolTipService.ToolTip>
<Canvas.RenderTransform>
<TranslateTransform X="-50"/>
</Canvas.RenderTransform>
<Path Data="F1 M 49.75,0L 0,200L 50,158.5L 100,200L 49.75,0 Z" Fill="#FF008F00" Stroke="Black"></Path>
</Canvas>
</Grid>
</ControlTemplate>
</BoatSymbol.ControlTemplate>
假设BoatSymbol的DataContext设置为适当的视图模型。