2016-04-23 86 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>