【问题标题】:Set minimum or maximum Height of Row of Grid in Xaml (Xamarin.Forms)在 Xaml (Xamarin.Forms) 中设置网格行的最小或最大高度
【发布时间】:2016-06-10 05:02:54
【问题描述】:
我需要使用 Xaml 或后面的代码在 Xamarin.Forms 中设置 RowDefinition 的最小高度 Grid。我没有找到像 MinHeight 或 MaxHeight 这样的属性。 RowDefinition 只有 Height 属性。
<Grid ColumnSpacing="10" Padding="20">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
【问题讨论】:
标签:
c#
xaml
xamarin
gridview
xamarin.forms
【解决方案1】:
你可以这样做来设置你的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
【解决方案2】:
我以与 Akash Amin 相同或相似的方式解决了这个问题。
在我的自定义控件中,我添加了一个具有固定高度的空 boxview 来设置行的最小高度。重要的标签被放置在透明的 boxview 上方。所以我没有在boxview中放置任何东西。
我在自定义控件的代码隐藏中编写了代码。
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 中。)