微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

当您在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("*");

原文地址:https://www.jb51.cc/csharp/95929.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐