C#在列表中显示图像和文本

时间:2012-05-17 12:30:47

标签: c# listview

c#中是否有任何控件允许我们使用图像和格式化的文本和图标制作某种列表视图,比如android中的联系人?我找到的最接近的是:

1)http://www.c-sharpcorner.com/UploadFile/mgold/ListViewInCSharp11172005021741AM/ListViewInCSharp.aspx

2)http://www.dreamincode.net/forums/topic/75911-adding-images-to-listview/

与Android和iPhone可以做的相比,我认为这是非常难看的,如下所示:

http://www.trymasak.my/sample/iphone2.jpg

3 个答案:

答案 0 :(得分:1)

我看到你在说什么,但很多时候得到“工作”和“造型”的东西是两个非常非常不同的东西。它在很大程度上取决于你使用的技术:WinForms(可能是最简单的开始,虽然定制可能是一件大事),WPF,Silverlight,这个列表还在继续。

这是我偶然发现的事情。这也是最新的。我很确定它有助于在WinForms中启动。它叫做ObjectListView:

http://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView

答案 1 :(得分:1)

好吧,如果您不关心是否使用WinForms或WPF,我建议您使用WPF。

如果您需要ListView之类的内容,请尝试使用DataGrid。您需要的基本概念是DataTemplate的使用。在DataTemplate内,您可以根据需要重新设置单元格的内容。

这是一个粗略的例子,我从我的一些代码中提取,但我没有让它自己编译。它会给你一个良好的开端。

<DataGrid ItemsSource="{Binding MyGridData}" AutoGenerateColumns="False" Name="my_datagrid">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Column1">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source={Binding GridCellImage}" />
                        <TextBlock Text="{Binding GridCellText}" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

阅读数据绑定以了解MyGridData。它基本上是代码隐藏的集合,为您的网格提供信息。它可能类似于List<T>ObservableCollection<T>。 T是一个有两个名为GridCellImageGridCellText的公共属性的类。 WPF使您可以轻松地在代码隐藏中创建数据,并且因为它是数据绑定的,所以GUI将自动更新(在ObservableCollection的情况下)。将GridCellImage设置为图像路径,将GridCellText设置为该单元格中所需的文本。 GridCellImage需要更多指定来实际使其工作,但这个答案的重点是向您展示在WPF中重新设置内容以使其显示数据非常容易,无论您喜欢什么。

希望这有帮助!

答案 2 :(得分:0)

使用wpf项目。创建StackPanel或Dockpanel,然后在其中添加组件。

然后将此面板添加到网格视图的子项

相关问题