WPF ListView-> GridView-> StackPanel

时间:2016-04-23 05:25:20

标签: c# wpf gridview

我有一个使用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>

1 个答案:

答案 0 :(得分:3)

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