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

C# 如何在代码隐藏中将FrameworkElement.Width属性设置为QualifiedDuble的值?,c#,wpf,xaml,.net-3.5,width,C#,Wpf,Xaml,.net 3.5,Width,我正在尝试将其中一个控件的width属性设置为QualifiedDuble, . (向下滚动至“XAML值”部分,查看MSDN关于使用合格双工的信息) 但是,我想知道如何在代码隐藏中实现这一点,而不是XAML。出于继承目的,我正在创建的UserControls没有附加XAML。因此,我必须手动执行所有XAML操作,使用C#中的所有工具 有人知道qualifiedDouble是如何在代码背后实现的吗?真是巧合,我今天早些时候不得不这么做。合格的双打最终将根据您提供的单位进行因子转换,但作为Leng

我正在尝试将其中一个控件的width属性设置为QualifiedDuble,
.
(向下滚动至“XAML值”部分,查看MSDN关于使用合格双工的信息)

但是,我想知道如何在代码隐藏中实现这一点,而不是XAML。出于继承目的,我正在创建的UserControls没有附加XAML。因此,我必须手动执行所有XAML操作,使用C#中的所有工具


有人知道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中,所有值都是字符串,因此您可以自动选择
TypeConverter
s将字符串转换为目标类型<例如,code>FontSizeConverter调用
LengthConverter
上的内部静态方法。(您也可以实例化
FontSizeConverter
)还有
GridLength
s的转换器,如“4*”和
Width
s的转换器,如“Auto”。或者,如我所说,您可以创建自己的类来进行转换,而无需字符串


对于代码隐藏,建议直接使用因子,因此我在上面提供了另一个示例。

这很有意义。虽然我有点失望,这是一个运行时字符串转换。我认为微软变得太依赖字符串了。啊,这是有道理的。如果你有带字符串的BEEF,他们希望你自己执行转换。我对字符串转换的特别问题是性能——在我的应用程序中,到处都会发生成千上万的转换,不能允许延迟。所以微软最明显的解决办法就是自己动手做,这样对我最有利。用更多的信息编辑了我的答案,还有“10px”之类的东西。