我在一个视图上有 2 个列表,我希望它们共享相同的 DataTemplate。
第一个列表可以直接使用这个 DataTemplate,第二个列表需要在特定条件下使用它,所以在第一种情况下,我有这样的 XAML 并且它可以工作:
<ListBox ItemTemplate="{StaticResource TrackedAssetTemplate}">
在第二种情况下,我有类似的东西,但不能让它工作..
<m:MapItemsControl.ItemTemplate>
<DataTemplate>
<Canvas
m:MapLayer.Position="{Binding Location}">
<Button
Visibility="{Binding IsSelected, Converter={StaticResource BoolToReverseVisibilityConverter}}"
Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}"
Style="{StaticResource LooklessButtonStyle}"
Command="{Binding DataContext.SelectedPushpinChangedCommand, ElementName=LayoutRoot}"
CommandParameter="{Binding}"
Cursor="Hand">
<Ellipse
Width="{Binding PushpinWidth}" Height="{Binding PushpinWidth}" Stroke="Black" Fill="{Binding IsGPSDataRecent, Converter={StaticResource BoolToGreenRedBrushConverter}}" StrokeThickness="1">
<ToolTipService.ToolTip>
<TextBlock Text="{Binding DeviceId}" />
</ToolTipService.ToolTip>
</Ellipse>
</Button>
<ContentControl
Visibility="{Binding IsSelected, Converter={StaticResource BoolToVisibilityConverter}}"
DataTemplate="{StaticResource TrackedAssetTemplate}" />
所以,我的想法是第一个 lisbox 有直接的模板。当在地图上选择项目时,我可以使用相同的数据模板,否则我会显示按钮。我试图将模板包装在里面的地图上,ContentControl
但它没有用。
那么,问题是如何将数据模板包装在数据模板中?