在Xaml中设置网格行的最小或最大高度(Xamarin.Forms)

时间:2016-06-10 05:02:54

标签: c# xaml xamarin gridview xamarin.forms

我需要使用Xaml或后面的代码在Xamarin.Forms中设置RowDefinition Grid的最小高度。我找不到像MinHeight或MaxHeight这样的房产。 RowDefinition只有高度属性。

<Grid ColumnSpacing="10" Padding="20">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
</Grid>

2 个答案:

答案 0 :(得分:5)

您可以执行此操作来设置MinimumHeight

<Grid ColumnSpacing="10" Padding="20">
    <Grid.RowDefinitions>
        <RowDefinition Height= "Auto"/>
    </Grid.RowDefinitions>
    <ContentView Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" MinimumHeightRequest="20">
        ...
    </ContentView>
</Grid>

注意:MinimumHeightRequest会选择请求的身高请求的最低身高之间的最小值。 Source

答案 1 :(得分:2)

我用与Akash Amin相同或类似的方式解决了问题。 在我的自定义控件中,我添加了一个具有固定高度的空boxview来设置行的最小高度。 importent标签位于transparant boxview上方。所以我没有在boxview中放置任何东西。 我在customcontrol中使用codebehind编写了代码。

var grid = new Grid();
grid.HorizontalOptions = LayoutOptions.Fill;
grid.VerticalOptions = LayoutOptions.Start;
grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto, });

var minSizer = new BoxView();
minSizer.HeightRequest = 30;
grid.Children.Add(minSizer, 0, 0);

 _label = new Label();
_label.VerticalTextAlignment = TextAlignment.Center;
_label.VerticalOptions = LayoutOptions.Center;
grid.Children.Add(_label, 0, 0);

...

(我觉得很奇怪,MinimumWidthRequest和MinimumHeightRequest不能像大多数人期望的那样工作。在xamarin我的意思是。)