2016-04-23 88 views
1

我有一个ListView使用GridView来显示一些数据。其中一个字段包含带图像路径的列表。因此我定义了一个GridViewColumn并创建一个DataTemplate。 Dis DataTemplate包含另一个带图像列表的ListView作为新的DataContext。当我不在内部StackPanel中写入任何内容时,我可以看到按照从左到右的顺序显示了一个字符串列表(格式为AppName.ClassName)。 但每当我尝试显示字符串作为别的东西,如WPF ListView-> GridView-> StackPanel

<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> 

回答

2

由于StackPanelItemsPanelTemplate的一部分,你应该只定义它的性质,而不是明确添加任何子女。指定每个项目的外观的方式是通过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>