我正在尝试将我的一个控件的宽度属性设置为qualifiedDouble,
如 MSDN 上所述。
(向下滚动到“XAML 值”部分以查看 MSDN 关于使用qualifiedDouble 的信息)
但是,我想知道如何在代码隐藏而不是 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
自动选择将字符串转换为目标类型。FontSizeConverter
例如,在 . 上调用内部静态方法LengthConverter
。(您也可以FontSizeConverter
改为实例化。)还有GridLength
像“4*”Width
这样的s 和像“Auto”这样的s 的转换器。或者,就像我说的,您可以创建自己的类来进行无字符串转换。
对于代码隐藏,本文建议直接使用因子,因此我在上面提供了一个替代示例。