【问题标题】:How to bind size properties with a unit different than px?如何将大小属性与不同于 px 的单位绑定?
【发布时间】:2014-10-21 03:06:54
【问题描述】:

每个用户控件大小的默认单位是 px,但可以轻松地将大小设置为不同的单位,例如:

<Canvas Height="29.7cm" Width="21cm" />

但是如果我想绑定这些属性怎么办?如何保留有关我想要的单位的信息?

【问题讨论】:

标签: wpf xaml data-binding user-controls units-of-measurement


【解决方案1】:

您可以创建一个自定义的converter,它将字符串表示形式转换为双精度(使用LengthConverter):

[ValueConversion(typeof(string), typeof(double))]
public class SizeConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double size = (double)new LengthConverter().ConvertFrom(value.ToString());
        return size;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException("SizeConverter is a oneway converter.")
    }
}

之后,您可以从 XAML 中引用该转换器:

<src:SizeConverter x:Key="sizeConverter"/>

<Canvas Height="{Binding Path=Height, Converter={StaticResource sizeConverter}}" 
        Width="{Binding Path=Width, Converter={StaticResource sizeConverter}}" />

(这里的HeightWidthstrings 在您的DataContextDataContext 中可用。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2018-09-10
    相关资源
    最近更新 更多