2013-05-11 128 views
1

我正在練習學習XAML,但語法在我的第一印象中過於冗長。我想從代碼隱藏創建一個GridView象下面這樣:XAML從代碼背後創建GridView

var gv = new GridView(); 

gv.Name = "itemGridView"; 
gv.ItemsSource = sampleDataGroups; 
gv.SetValue(AutomationProperties.AutomationIdProperty, "ItemGridView"); 
gv.SetValue(AutomationProperties.NameProperty, "Grouped Items"); 
gv.Padding = new Thickness(116, 137, 40, 46); 
Grid.SetRowSpan(gv, 2); 

雖然我可以把我的GridView的」填充像一個屬性,爲什麼我使用網格類來設置其行跨度的靜態方法?

該決定背後的原因是什麼?

注意:我想我可以寫一個擴展方法來做到這一點,但我很好奇它爲什麼不是在開始。

回答

1

原因是 - 一個GridView(或除了Grid本身之外幾乎所有其他控件)沒有RowSpan屬性。這些控件都沒有,ColumnColumnSpan屬性。

不相信我?退房the MSDN documentation for GridView。 ;)

這些是屬性,你可以使用當你把東西放入Grid。請注意,在XAML中,您還可以以略微不同的方式設置這些屬性:Grid.Row="1"而不僅僅是Padding="2"

您也可以像AutomationProperties那樣設置Grid屬性。 Grid.SetRowSpan只是一個簡寫。

0

因爲setrow和setrowspan是可用於gridview的父GRID的附加屬性,它決定了子節點的測量和佈局,因此不能直接提供給子節點(gridview)。