我正在尝试将其中一个控件的width属性设置为qualifiedDouble,
as described here on MSDN。
(向下滚动到“XAML值”部分,查看MSDN关于使用qualifiedDouble的信息)
但是,我想知道如何在代码隐藏中实现这一点,而不是XAML。我正在创建的UserControl没有附加XAML,以用于继承。所以我必须手动执行所有XAML操作,使用C#中的所有操作。
有谁知道在代码隐藏中如何实现qualifiedDouble?
答案 0 :(得分:5)
巧合的是,我今天早些时候必须这样做。合格的双打最终会根据您提供的单位进行因子转换,但作为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
,如“Auto”。或者,就像我说的,你可以创建自己的类来转换而不用字符串。
This article建议直接使用该因子,因此我在上面提供了另一个例子。