这可能很简单,但此刻我正在撕裂我的头发。
我想在模型的地图上显示图钉。所以我为图钉创建了一个模板
<ControlTemplate x:Key="PushpinTemplate" TargetType="m:Pushpin">
<Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
<Image Source="Resources/Pushpins/img.png" Stretch="Fill"/>
</Grid>
</ControlTemplate>
然后将其用于绑定集合,如下所示:
<m:MapLayer x:Name="myPushpinLayer">
<m:MapItemsControl x:Name="myPushpins" ItemsSource="{Binding PushpinCollection}">
<m:MapItemsControl.ItemTemplate>
<DataTemplate>
<m:Pushpin Location="{Binding Location}" Template="{StaticResource PushpinTemplate}" />
</DataTemplate>
</m:MapItemsControl.ItemTemplate>
</m:MapItemsControl>
</m:MapLayer>
但我想要做的是通过绑定更改图像源,但我不确定如何进行此操作。我打算做的是使用转换器根据集合中的id改变图像,如果这改变了最好的方法。
编辑:
我还有一点:
<m:MapLayer x:Name="myPushpinLayer">
<m:MapItemsControl x:Name="myPushpins" ItemsSource="{Binding PushpinCollection}">
<m:MapItemsControl.ItemTemplate>
<DataTemplate>
<m:Pushpin Location="{Binding Location}"/>
<m:Pushpin.Template>
<ControlTemplate>
<Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
<Image Source="{Binding Type,Converter={StaticResource ImageConverter}}" Stretch="Fill"/>
</Grid>
</ControlTemplate>
</m:Pushpin.Template>
</m:Pushpin>
</DataTemplate>
</m:MapItemsControl.ItemTemplate>
</m:MapItemsControl>
</m:MapLayer>
如果我将图钉模板移动到</phone:PhoneApplicationPage.Resources>
部分,则会失败。我不知道为什么。我想现在我正试图掌握我对这一切是如何运作的理解
答案 0 :(得分:2)
只需将绑定添加到ControlTemplate
即可<ControlTemplate x:Key="PushpinTemplate" TargetType="m:Pushpin">
<Grid x:Name="ContentGrid" Width="32" Height="32" Margin="0">
<Image Source="{Binding ImageUri}" Stretch="Fill"/>
</Grid>
</ControlTemplate>
我建议使用ImageUri(类型为Uri)属性来反映要显示的图像,而不是使用转换器。但是转换器也可以工作,绑定也以相同的方式完成。