如何以编程方式构建这段XAML?
<Grid Name="gridMarkets">
<Grid.RowDefinitions>
<RowDefinition Height="10" />
<RowDefinition Height="*" MinHeight="16" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
</Grid>
是动态解析和构造控件的优雅解决方案吗?
我正在尝试做点什么:
RowDefinition newRow = new RowDefinition();
newRow.Height = new GridLength(10);
newGrid.RowDefinitions.Add(newRow);
但如何指定*
标志?
寻找这个问题的任何想法! 谢谢!
答案 0 :(得分:35)
您可以使用Grid.Star
单位类型
newRow.Height = new GridLength(1, GridUnitType.Star);
您也可以使用XamlReader对象将XAML字符串从代码隐藏转换为UI对象,但我通常更喜欢手动创建对象,就像创建它们一样。
答案 1 :(得分:8)
以下是一些例子:
grid.RowDefinitions.Add(new RowDefinition {Height = new GridLength(10)});
grid.RowDefinitions.Add(new RowDefinition {Height = new GridLength(1, GridUnitType.Star), MinHeight = 16});
grid.RowDefinitions.Add(new RowDefinition {Height = new GridLength(1, GridUnitType.Star)});
grid.RowDefinitions.Add(new RowDefinition {Height = GridLength.Auto});
和列类似。
答案 2 :(得分:5)
正如其他人所建议的那样,使用允许您指定GridLength
的{{1}}构造函数是正确的方法。
但是,如果由于某种原因,你想要将字符串值实际转换为正确的类型,就像在XAML中完成一样,你也可以这样做:
查看GridUnitType
类型:它已使用参数GridLength
定义了TypeConverter
属性。这意味着您可以使用该类型执行转换:
typeof(GridLengthConverter)