其他分享
首页 > 其他分享> > 在隐藏的代码中,如何将FrameworkElement.Width属性设置为qualifiedDouble的值?

在隐藏的代码中,如何将FrameworkElement.Width属性设置为qualifiedDouble的值?

作者:互联网

我正在尝试将其中一个控件的width属性设置为qualifiedDouble,
as described here on MSDN.
(向下滚动到“ XAML值”部分,以查看有关使用qualifiedDouble的MSDN信息)

但是,我想知道如何在代码背后而不是XAML中实现这一点.为了继承,我正在创建的UserControl没有附加XAML.因此,我必须使用C#中可以执行的所有操作手动执行所有XAML操作.

有谁知道在后面的代码中qualifiedDouble是如何实现的?

解决方法:

巧合的是,我今天早些时候不得不这样做.合格的双打最终根据您提供的单位进行因子转换,但作为LengthConverter的一部分.

LengthConverter lc = new LengthConverter();
string qualifiedDouble = "10pt";

double converted = lc.ConvertFrom( qualifiedDouble );

备用:

double original = 10.0;
double converted = original * 1.333333333; // px-to-pt conversion

例如,这会将“ 10pt”转换为13.3333333.您也可以使用本文提供的转换因子,但是由于这些因子已内置在类中,因此我更喜欢使用上述转换因子.

编辑:回应关于字符串的评论…

字符串转换对于它的预期目的是完全合理的.他们使用XAML是因为用XAML表示某些内容比使用C#或VB容易得多.在XAML中,所有值都是字符串,因此自动选择了TypeConverters即可将字符串转换为目标类型.例如,FontSizeConverter在LengthConverter上调用一个内部静态方法. (您也可以实例化FontSizeConverter.)还有GridLengths的转换器,例如“ 4 *”,Widths的转换器,例如“ Auto”.或者,就像我说的那样,您可以创建自己的类以进行转换而无需字符串.

对于代码隐藏,This article建议直接使用该因子,因此我在上面提供了一个替代示例.

标签:width,net-3-5,wpf,xaml,c
来源: https://codeday.me/bug/20191024/1920431.html