读书人

WPF中这样的效果需要用什么控件来呈现

发布时间: 2012-04-22 18:34:46 作者: rapoo

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}" /> 

读书人网 >C#

热点推荐