GridView这个东西可以接受一个集合(一个组Group),也可以一个包含集合的集合(多个Group)。ListView是一样的道理。GridView有诸多的属性,有的是关于Item的,包括Item的DataTemplate,即一个项中的数据如何排列,有的是多个Items的,包括ItemsPanel,即多个Item怎么在一个Panel中配列,有的是多个Group的,Group怎么排列,等等,我只将我遇到的问题,接触到的问题阐述一下,其他的东西慢慢研究。
老套路,先上个图吧。自己总结的各个属性都代表了什么意思,设置哪一块的。
这里是讲述了一个GridView中有两个Group的情况,每个Group中又有三个Items。
另外,因为之前我们一直在捣鼓不同的DataTemplate,所以这里的一个Group里面有两个DataTemplate,左边的大的占单独一列,其他两个占一列。这里需要注意一下:
设置规律:
如果在GroupStyle.Panel里面设置了ItemHeight ItemWidth,并且设置了MaxColumOrRow的话,会自动计算,比如设置了100,200,5的话,那么现在算出来,这个Group的宽是1000,高是500,如果同时在GroupStyle.Container里面设置的<Setter Property="Width" value="1000"/> <Setter Property="Heigh" Value="500"/>的话,那么刚合适。
如果Container里面设置的是width=800, height=400的话,将会有一部分不会显示.
如果你在Container里面没有设置Width和height的话,那么,如果竖着装不下的话,它会查看横着能不能装下,如果可以就横着装,如果不行,一部分不显示。
以下部分是在之前练习GridView分组的时候
GroupStyle: Describes how to display the grouped items in a collection. If a gridview have two groups, this groupstyle is purposed to display how these two gropu display in gridview. It has some properties need to be setted in XAML file.
ContainerStyle: Gets or sets style that is applied to the GroupItem genarated or each item. Means set each groups border, margin, or background e.t.
HeaderTemplate: Gets or sets the template that is used to display the group header.
HidesIfEmpty : indicates whether items corresponding to empty groups should be display.
Panel: a template that creates the panel used to lay out the items.
It looks like similar with ItemsPanel, because the definition is:
property ItemsPanelTemplate^ Panel{
ItemsPanelTemplate^ get();
void set(ItemsPanelTemplate^ value);
}
But even this, they're different.
I'v try modify <GroupStyle.Panel><ItemsPanelTemplate><VeriableGrid ...></..></..>. It didn't affect the items layout in a Group.
Other wise, If you modify ItemsPanel, a property of GridView, you can obviously notify the difference.
So my suggestion is if you want change layout of items, just use ItemsPanel="{StaticResource someTemplate}".
if you set a Itemspanel and then you also set a GroupStyle.Panel, you will got a wrong layout. Seggestion is set GoupStyle and don't set ItemsPanel
<local:VariableSizedWrapGridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="Background" Value="Red"/>
<Setter Property="BorderBrush" Value="Green"/>
<Setter Property="BorderThickness" Value="5"/>
<Setter Property="Margin" Value="60"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Name" Value="Hello"/>
</Style>
</local:VariableSizedWrapGridView.ItemContainerStyle>
今天暂且到这里,明天再把这章好好整理一下。实在不想弄了。下一章结合着如何实现GridView的分组分析一下GridView。
posted on 2012-10-18 21:29
Dino-Tech 阅读(975)
评论(0) 编辑 收藏 引用