【问题标题】:c# WPF CellTemplate / DataTemplate for an Image list / arrayc# WPF CellTemplate / DataTemplate 用于图像列表/数组
【发布时间】:2014-05-28 14:51:58
【问题描述】:

我有什么:

我的班级:

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

有可能吗?

如果是,如何..

谢谢!

【问题讨论】:

    标签: c# wpf datatemplate celltemplate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这个模板应该可以工作:

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

      因为StackPanel 没有属性ItemsSource,所以不能直接绑定到它。如果您将其用作ItemsPanelTemplateItemsControl,一切都很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-26
        • 2013-01-17
        • 2017-02-07
        • 2011-02-15
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多