日期:2014-05-18  浏览次数:20893 次

WPF中这样的效果需要用什么控件来呈现?内附图片


1 如上图所示,每一行是一组,每一组最前面的是这个组的标题,标题后面的暂称为成员。

  每一组的成员数目不等,且动态变化。

2 这个整体由一组一组的数据组成。

大家给指点一下,这个在WPF中该用什么控件来呈现?



------解决方案--------------------
ListBox
自己写Item的模板
------解决方案--------------------
写个自定义控件,
因为每个小组件大小、间距等都一样,
写起来很容易,
数据源用List<T>等可变大小的集合,
再用代码遍历集合动态创建就行了
------解决方案--------------------
这样的话,首先你得数据源的结构是什么呢?我的想法:
class Item
{
Title 属性;
ICollection<Child>集合属性;
}

每个Item代表你说的一组。
然后最外面一层当然是个ListBox,这个ListBox的ItemsSource绑定到一个ICollection<Item>

那么这个ListBox的controltemplate要自己改了。
XML code


              <ListBox.ItemContainerStyle>
                    <Style TargetType="ListBoxItem">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate>
                                   自己改模板

------解决方案--------------------
边框线是各自带线,如果你说的不是那种效果,那么就应该是DataGrid里面的分割线了,你可以考虑直接使用DataGrid来实现,也是做得到的,而且那线条应该就是你说的效果。
------解决方案--------------------
不一定非要用线,隔行渐变也不错
------解决方案--------------------
想加线很容易。
把原来的存放title 和 children的stackpanel换成Grid.
两行两列。
第一行分别放原来的title 和 children.
第二行列合并,放一条线即可。
------解决方案--------------------
我是通过PART_Name来实现的
内部的ListBox
XML code

<ListBox Name="PART_Children" ItemContainerStyle="{StaticResource fileItemStyle}" Style="{StaticResource listboxFileStyle}" Grid.Row="1" ItemsSource="{Binding Children}" />