在xaml中创建网格时,可以这样定义RowDefinitions
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
</Grid>
我需要在代码中做同样的事情。我知道我会写
RowDefinition row = new RowDefinition();
row.Height = new GridLength(1.0, GridUnitType.Star);
但这不能帮到我,因为我输入了一个字符串。我可能可以创建自己的“字符串转换为GridLength”转换器,但这感觉不对,因为它可以从xaml正常运行。当然,我已经尝试了以下方法,但是没有用
row.Height = new GridLength("*");
我在这里想念什么?
最佳答案
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("*");
关于c# - 在代码中指定RowDefinition.Height,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7264241/