C# Xamarin更改网格中每行的行高
我有个问题。我想更改网格中每一行的行高,因此我给每一行命名如下:C# Xamarin更改网格中每行的行高,c#,xamarin,xamarin.forms,xamarin.android,xamarin.ios,C#,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我有个问题。我想更改网格中每一行的行高,因此我给每一行命名如下: <Grid.RowDefinitions> <RowDefinition Height="40" x:Name="Row0_Height"/> <RowDefinition Height="*" x:Name="Row1_Height"/> <RowDefinition Height="*" x:Name="Row2_Height"/> <Row
<Grid.RowDefinitions>
<RowDefinition Height="40" x:Name="Row0_Height"/>
<RowDefinition Height="*" x:Name="Row1_Height"/>
<RowDefinition Height="*" x:Name="Row2_Height"/>
<RowDefinition Height="30" x:Name="Row3_Height"/>
</Grid.RowDefinitions>
但是如何使用c代码设置这些值呢?此代码的c等价物是:-
Row0_Height.Height = new GridLength(40);
Row1_Height.Height = new GridLength(1, GridUnitType.Star);
Row2_Height.Height = new GridLength(1, GridUnitType.Star);
Row3_Height.Height = new GridLength(30);
我不确定你能在xaml上做到这一点。或者至少我不知道。更简单的方法是在代码隐藏处执行此操作,并创建网格或使用新行定义设置网格 类似这样的方法会奏效:
MyGrid.RowDefinitions = new RowDefinitionCollection();
MyGrid.ColumnDefinitions = new ColumnDefinitionCollection();
for (int i = 0; i< 5; i++)
{
MyGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
MyGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new G GridLength(1, GridUnitType.Star) });
}
Row0_Height未在此范围内声明?网格是否在页面内或ListView内?是否在ListView内?这就是您无法将其设置为C#的原因。如果您想在C#中完成,那么需要在C#中而不是在Xaml中生成整个数据模板。我可以问你为什么要用C来做这个吗?我想用屏幕像素来计算高度。为此,我需要用C#好的,但是我需要删除axml中的行定义吗?@A.Vreeswijk是的,您不再需要它们。@A.Vreeswijk可能是第二种方法,对您更合适。我需要将该模型部分放在页面构造函数中吗?@A.Vreeswijk您需要行大小,不,您只需要定义一个属性并设置其值。它可以是固定的,也可以是计算出来的。第一个解决方案是必须调用构造函数或其他等价的方法。为什么不使用RowHeight作为Auto?那么它会根据需要自动调整吗?
<Grid.RowDefinitions>
<RowDefinition Height="{Binding RowSize, Mode=TwoWay}" />
</Grid.RowDefinitions>
private float _rowSize = 230;
public float RowSize
{
get {
return _rowSize ;
}
}