Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin更改网格中每行的行高_C#_Xamarin_Xamarin.forms_Xamarin.android_Xamarin.ios - Fatal编程技术网

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 ;    
        }
    }