我正在练习学习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'填充设置为属性,但为什么我使用网格类的静态方法来设置其rowSpan?
该决定背后的原因是什么?
注意: 我想我可以写一个扩展方法来做到这一点,但我很好奇为什么它不是在开头做的。
答案 0 :(得分:1)
原因是 - GridView
(或除了Grid
本身之外几乎所有其他控件)都没有RowSpan
属性。这些控件都不具有Row
,Column
和ColumnSpan
属性。
不相信我?查看the MSDN documentation for GridView
。 ;)
这些是您在Grid
内放置内容时可以使用的属性。请注意,在XAML中,您还以稍微不同的方式设置这些属性:Grid.Row="1"
而不仅仅是Padding="2"
。
您也可以像Grid
一样设置AutomationProperties
属性。 Grid.SetRowSpan
只是简写。
答案 1 :(得分:0)
因为setrow和setrowspan是附加属性,可供gridview的父GRID使用,它决定了孩子的测量和布局,因此不能直接供孩子使用(gridview)。