当你在xaml中创建一个Grid时,你可以定义RowDefinitions
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
</Grid>
我需要在代码中做同样的事情。我知道我能写
RowDefinition row = new RowDefinition();
row.Height = new GridLength(1.0, GridUnitType.Star);
但这对我没什么帮助,因为我有一根绳子要插进去我可以创建自己的“字符串到网格长度”转换器,但这感觉不对,因为它在xaml中工作得非常顺利。当然,我尝试过以下方法,但不起作用
row.Height = new GridLength("*");
我错过了什么?
4条答案
按热度按时间s1ag04yj1#
GridLength
结构体定义了一个TypeConverter
,当从Xaml示例化时使用它。你也可以在代码中使用它。名称:GridLengthConverter
如果你用Reflector看
GridLength.cs
,它看起来像这样。注意TypeConverter
此时你是用它时
qni6mghb2#
将RowDefinition包含到RowDefinitions中时缺少
再见!拉克斯
des4xlb03#
不需要创建转换器,已经有一个了,XAML解析器也在使用它:
在一个旁注上,你会发现像这样的转换器用于很多类型,因为很多类型都是从XAML中的字符串解析出来的,例如。
BrushConverter
&ImageSourceConverter
vojdkbi04#
以下Rutx的回答,我会使它更短