GridView這個(gè)東西可以接受一個(gè)集合(一個(gè)組Group),也可以一個(gè)包含集合的集合(多個(gè)Group)。ListView是一樣的道理。GridView有諸多的屬性,有的是關(guān)于Item的,包括Item的DataTemplate,即一個(gè)項(xiàng)中的數(shù)據(jù)如何排列,有的是多個(gè)Items的,包括ItemsPanel,即多個(gè)Item怎么在一個(gè)Panel中配列,有的是多個(gè)Group的,Group怎么排列,等等,我只將我遇到的問題,接觸到的問題闡述一下,其他的東西慢慢研究。
老套路,先上個(gè)圖吧。自己總結(jié)的各個(gè)屬性都代表了什么意思,設(shè)置哪一塊的。

這里是講述了一個(gè)GridView中有兩個(gè)Group的情況,每個(gè)Group中又有三個(gè)Items。
另外,因?yàn)橹拔覀円恢痹趽v鼓不同的DataTemplate,所以這里的一個(gè)Group里面有兩個(gè)DataTemplate,左邊的大的占單獨(dú)一列,其他兩個(gè)占一列。這里需要注意一下:
設(shè)置規(guī)律:
如果在GroupStyle.Panel里面設(shè)置了ItemHeight ItemWidth,并且設(shè)置了MaxColumOrRow的話,會(huì)自動(dòng)計(jì)算,比如設(shè)置了100,200,5的話,那么現(xiàn)在算出來,這個(gè)Group的寬是1000,高是500,如果同時(shí)在GroupStyle.Container里面設(shè)置的<Setter Property="Width" value="1000"/> <Setter Property="Heigh" Value="500"/>的話,那么剛合適。
如果Container里面設(shè)置的是width=800, height=400的話,將會(huì)有一部分不會(huì)顯示.
如果你在Container里面沒有設(shè)置Width和height的話,那么,如果豎著裝不下的話,它會(huì)查看橫著能不能裝下,如果可以就橫著裝,如果不行,一部分不顯示。
以下部分是在之前練習(xí)GridView分組的時(shí)候
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>
今天暫且到這里,明天再把這章好好整理一下。實(shí)在不想弄了。下一章結(jié)合著如何實(shí)現(xiàn)GridView的分組分析一下GridView。
posted on 2012-10-18 21:29
Dino-Tech 閱讀(980)
評(píng)論(0) 編輯 收藏 引用