我有5个网页都有这种网格结构:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<!-- TOP CONTENT HERE -->
</Grid>
<Grid Grid.Row="1">
<!-- MIDDLE CONTENT HERE -->
</Grid>
<Grid Grid.Row="2">
<!-- BOTTOM CONTENT HERE -->
</Grid>
现在显然这只是针对这个问题进行了简化 - 但我想避免的是,在每个视图中都要使用完全相同的Grid布局和所有样式等。
问题是,我怎样才能以最简单的方式创建一个控件,View1,View2..ViewN可以添加到他们的xaml并指定他们认为合适的TOP,MIDDLE和BOTTOM内容?
答案 0 :(得分:1)
这个简单的派生网格会根据需要自动排列三个子元素:
public class AutoGrid : Grid
{
public AutoGrid()
{
RowDefinitions.Add(new RowDefinition { Height = new GridLength(0, GridUnitType.Auto) });
RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
RowDefinitions.Add(new RowDefinition { Height = new GridLength(0, GridUnitType.Auto) });
}
protected override Size MeasureOverride(Size constraint)
{
for (int i = 0; i < Children.Count; i++)
{
SetRow(Children[i], i);
}
return base.MeasureOverride(constraint);
}
}