3

我正在尝试将我的一个控件的宽度属性设置为qualifiedDouble,
如 MSDN 上所述
(向下滚动到“XAML 值”部分以查看 MSDN 关于使用qualifiedDouble 的信息)

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

有谁知道在代码隐藏中如何实现qualifiedDouble?

4

1 回答 1

6

多么巧合,我今天早些时候不得不这样做。合格的双打最终会根据您提供的单位进行因子转换,但作为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 的转换器。或者,就像我说的,您可以创建自己的类来进行无字符串转换。

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

于 2009-08-14T18:08:44.430 回答