gpt4 book ai didi

c# - 在代码中指定 RowDefinition.Height

转载 作者:可可西里 更新时间:2023-11-01 08:02:12 25 4
gpt4 key购买 nike

当您在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com