我有一个使用GridView显示一些数据的ListView。其中一个字段包含带有图像路径的列表。因此,我定义了一个GridViewColumn并创建了一个DataTemplate。 Dis DataTemplate包含另一个ListView,其中Images列表作为新的DataContext。当我不在内部StackPanel中写任何东西时,我可以看到字符串列表(格式为AppName.ClassName)以从左到右的顺序显示。 但每当我尝试将字符串显示为其他内容时,例如
<Image Source="{Binding Name}" Height="32"/>
我得到一个System.Windows.Markup.XamlParseException。即使有数据绑定,我也会遇到异常。例如
<Image Source="Images/Camera_32xLG.png" Height="32"/>
。任何提示,我可能做错了什么?
<GridViewColumn Header="Images">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding Images}" BorderThickness="0">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal">
--> here is where I don't know what to do next
</StackPanel>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
答案 0 :(得分:3)
由于StackPanel
是ItemsPanelTemplate
的一部分,因此您应该定义它的属性,而不是明确添加任何子项。指定每个项目外观的方法是通过ListView.ItemTemplate
属性:
<ListView ItemsSource="{Binding Images}" BorderThickness="0">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Name}" Height="32" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>