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