我在声明DataTemplate以显示KeyValuePairs的列表或网格时遇到了麻烦。当ContentTemplate声明如下时,我在后面的代码中设置以下控件的Content属性。
<esri:InfoWindow x:Name="MyInfoWindow" IsOpen="False"
Padding="2"
CornerRadius="0"
Background="White"
ContentTemplate="{StaticResource MyFeatureLayerInfoWindowTemplate}"
Map="{Binding ElementName=MyMap}" Content="Something">
<esri:InfoWindow.ContentTemplate>
<DataTemplate x:Key="MyFeatureLayerInfoWindowTemplate">
<sdk:DataGrid>
<sdk:DataGrid.Template>
<ControlTemplate>
<TextBlock Text="{Binding}" Foreground="Black" FontSize="12" />
</ControlTemplate>
</sdk:DataGrid.Template>
</sdk:DataGrid>
</DataTemplate>
</esri:InfoWindow.ContentTemplate>
</esri:InfoWindow>
ControlTemplate中的Textblock接收Content中设置的对象就好了,但是它应该显示接收到的对象的类型。
我放入了一个DataGrid,因为如果我把绑定设置如下,它会以网格格式显示集合(只是关键属性),但如果我写这个,输出就会变为空。
<TextBlock Text="{Binding Path=Key}" Foreground="Black" FontSize="12" />
答案 0 :(得分:1)
如您所见, ObservableDictionary 本身正在传递给该模板,您可以将该字典传递给某种类型的 ItemsControl 。
...内
<sdk:DataGrid.Template>
<ControlTemplate>
<TextBlock Text="{Binding}" Foreground="Black" FontSize="12" />
</ControlTemplate>
</sdk:DataGrid.Template>
尝试类似......
<sdk:DataGrid.Template>
<ControlTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Key}" Foreground="Black" FontSize="12" />
</DataTemplate>
</TtemsControl.ItemTemplate>
</ItemsControl>
</ControlTemplate>
</sdk:DataGrid.Template>
看看它给你的东西。