在代码中指定RowDefinition.Height

问题描述 投票:0回答:4
c# wpf xaml grid
4个回答
19
投票

GridLength
结构体定义了
TypeConverter
,从 Xaml 实例化时将使用该结构。您也可以在代码中使用它。这叫
GridLengthConverter

如果你用 Reflector 看

GridLength.cs
,它看起来像这样。注意
TypeConverter

[StructLayout(LayoutKind.Sequential), TypeConverter(typeof(GridLengthConverter))]
public struct GridLength : IEquatable<GridLength>
{
    //...
}

你可以这样使用它

GridLengthConverter gridLengthConverter = new GridLengthConverter();
row.Height = (GridLength)gridLengthConverter.ConvertFrom("*");

13
投票

您缺少将 RowDefinition 包含到 RowDefinitions

RowDefinition row = new RowDefinition();
row.Height = new GridLength(1.0, GridUnitType.Star);
YourGrid.RowDefinitions.Add(row);

再见! 芸香科


11
投票

无需创建转换器,已经有一个转换器,XAML 解析器也正在使用它:

var converter = new GridLengthConverter();
row.Height = (GridLength)converter.ConvertFromString("*");

顺便说一句,您会发现像这样的转换器适用于很多类型,因为许多类型是从 XAML 中的字符串解析的,例如

BrushConverter
&
ImageSourceConverter


0
投票

按照 Rutx 的回答,我会把它写得更短

grdLbx.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1.0, GridUnitType.Star) });
© www.soinside.com 2019 - 2024. All rights reserved.