0

我有的:

我的课:

public class MyImage
{
    public String ImagePath { get; private set; }
    public String Name { get; private set; }

    // ...
}

XAML:

<Window.Resources>
    <DataTemplate x:Key="template_image">
        <Image Source="{Binding Path=ImagePath}" Stretch="None" />
    </DataTemplate>
    <DataTemplate x:Key="template_name">
        <TextBlock Text="{Binding Path=Name}" />
    </DataTemplate>
</Window.Resources>


<ListView x:Name="gui_listview_graphics" Margin="75,0,0,0">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Graphic" CellTemplate="{StaticResource template_image}" />
            <GridViewColumn Header="Name" CellTemplate="{StaticResource template_name}" />
        </GridView>
    </ListView.View>
</ListView>

工作正常。

现在我现在想要什么..

我需要显示一个图像列表而不是一个图像。

我的新课:

public class MyNewImage
{
    public ObservableCollection<String> ImagePath { get; private set; }
    public String Name { get; private set; }

    // ...
}

DataTemplate 应该包含一个包含所有图像的 Stackpanel。

可能吗?

如果是,如何..

谢谢!

4

2 回答 2

2

在您的 DataTemplate 中包含一个 ItemsControl,其 Items 属性绑定到您的图像路径集合。您的 ItemsControl 的 ItemTemplate 基本上与您当前的 DateTemplate 相同,除了您将对 Image 源使用隐式绑定,因为字符串本身就是您的对象。ItemsControl 的 ItemsPanel 的默认模板已经是 StackPanel,但如有必要,您可以通过设置 ItemsPanel 属性来更改它。

于 2014-05-28T14:59:11.177 回答
1

该模板应该可以工作:

<DataTemplate x:Key="template_image_list">
  <ItemsControl ItemsSource="{Binding ImagePath}">
    <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
        <StackPanel />
      </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <Image Source="{Binding}"></Image>
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</DataTemplate>

因为 aStackPanel没有属性ItemsSource,所以不能直接绑定到它。如果你使用它ItemsPanelTemplateItemsControl一切都很好。

于 2014-05-28T14:58:52.293 回答