加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:18:25 所属栏目:百科 来源:网络整理
导读:当您在xaml中创建网格时,您可以定义RowDefinitions Grid Grid.RowDefinitions RowDefinition Height="*"/ RowDefinition Height="Auto"/ /Grid.RowDefinitions/Grid 我需要在代码中做同样的事情.我知道我可以写 RowDefinition row = new RowDefinition();row
当您在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实例化时正在使用的TypeConverter.您也可以在代码中使用它.它被称为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("*");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读