如何在WPF中实现自定义的可排序和可扩展列表

时间:2013-04-09 08:18:01

标签: c# wpf

我需要实现如下定制的列表。您应该能够通过单击标题对给定字段上的项目进行排序。 一条线也应该是可扩展的。当用户点击+时,该行应展开并在其field2值下披露更多信息。

my need :

我曾尝试在GridView中使用ListView。对于每一列,我已经定义了一个模板(field1值的模板,左边是+,一个是字段2值,一个是字段3值)。通过这个实现,我的问题是“如何扩展一行”。

我还查看了ListBox组件,但我需要手动创建标头并对齐内容。我还需要手动排序。这对我来说似乎不是一个好的解决方案。

你有更好的想法或任何建议吗?

2 个答案:

答案 0 :(得分:2)

正确的基本控件似乎是DataGrid。 它将为您提供诸如标题排序等功能。

如果您希望它在屏幕截图中显示,则必须通过样式修改其ControlTemplate

作为灵感来说,您可以如何进行细节扩展,以下文章可以帮助您:

Grouping in DataGrid in WPF

您还可以考虑查看第三方dataGrids,以防标准DataGrid无法满足您的所有需求,但使用单独的Templating,您可以获得相当远的目标。

答案 1 :(得分:1)

如果我理解正确,通过“展开”你的意思是在一条线下(或者特别是一个列表视图项)显示?

如果是这种情况,请在数据模板中添加一个stackpanel,并将其Visibility更改为collaped;

点击“+”按钮,将拼贴更改为可见。

<ListView ...>
   <ItemTemplate>
       <GridView ...>
           <Button Name="ExpandButton Click="OnClick"/>
       <StackPane  Visibility={Binding SomeProperty} />
   <Itemtemplate>
</ListView>

在Onclick中,更改SomeProperty = Visibility.Visible。我假设您对WPF中的数据绑定感到满意。