【问题标题】:WPF ListView->GridView->StackPanelWPF ListView->GridView->StackPanel
【发布时间】:2016-08-16 20:42:03
【问题描述】:

我有一个 ListView,它使用 GridView 来显示一些数据。其中一个字段包含带有图像路径的列表。因此我定义了一个 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>

【问题讨论】:

    标签: c# wpf gridview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多