0
我在我的WPF项目中使用Bing地图,并且我想使用通用样式的总体项目View with map。关于Bing映射并不重要,这里的问题是DataTemplate中定义的代码的可重用性,也适用于ViewModel的单个对象。WPF - DataTemplate代码重用项集合
在下面的代码中,存在放置在地图上的图像的DataTemplate。它有一些属性绑定在来自集合的ViewModel项目上。
<DataTemplate x:Key="HeadingArrowsDataTemplate">
<Image Source="/Intens.C2XTestPlatform.Frontend;component/Images/Maps/Arrow.png"
m:MapLayer.Position="{Binding PointLocation}"
RenderTransformOrigin="0.5,1"
Width="100"
Height="100"
Visibility="{Binding Path=PointLocation, Converter={StaticResource IsNotNullVisibilityConverter}}">
<Image.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Heading}" />
<TranslateTransform X="-50"
Y="-100" />
</TransformGroup>
</Image.RenderTransform>
</Image>
</DataTemplate>
我用它在第一信息查看的ViewModels集合(RelevanceLinesVM
):
<m:Map CredentialsProvider="{Binding MapCredentialsProvider}"
Mode="Road"
x:Name="ucMap">
<m:MapItemsControl ItemsSource="{Binding RelevanceLinesVM}"
helpers:MapFixBehavior.FixUpdate="True"
ItemTemplate="{StaticResource HeadingArrowsDataTemplate}"
</m:Map>
在其他视图中,我只有单一的视图模型对象(RelevanceLineVM
),我需要复制粘贴代码从DataTemplate获得相同的外观和绑定。
<m:Map Name="ucMap"
Mode="Road"
CredentialsProvider="{Binding MapCredentialsProvider}">
<Image DataContext="{Binding RelevanceLineVM}"
Source="/Intens.C2XTestPlatform.Frontend;component/Images/Maps/Arrow.png"
RenderTransformOrigin="0.5,1"
Width="100"
Height="100"
m:MapLayer.Position="{Binding PointLocation}"
Visibility="{Binding Path=PointLocation, Converter={StaticResource IsNotNullVisibilityConverter}}">
<Image.RenderTransform>
<TransformGroup>
<RotateTransform Angle="{Binding Heading}" />
<TranslateTransform X="-50"
Y="-100" />
</TransformGroup>
</Image.RenderTransform>
</Image>
</m:Map>
如何为单个ViewModel和ViewModel集合创建通用模板?
编辑
灰的回答作品,可惜只有这些属性中的DataTemplate,这是从ContentControl
类继承。其他未正确绑定。
添加ContentControl中和重用
HeadingArrowsDataTemplate
它的工作原理percetly,除的'米:MapLayer.Position = “{结合PointLocation}”'。 – Majak@Majak,不幸的是我对Map,MapItemsControl或MapLayer.Position不熟悉,以及它们是如何一起工作的,但我会尝试在ContentControl上重复'm:MapLayer.Position =“{Binding PointLocation}”'以及 – ASh
OK这有所帮助。谢谢! – Majak