无法理解XAML Converter中的错误

时间:2013-08-28 20:55:58

标签: wpf double converter

我使用转换器来“转换”宽度。我想制作10%的“父”宽度。所以我使用参数值“0.1”(10%)。但在转换器中,此值将转换为“1.0”。我不知道为什么(见下图)。

PercentageConverter.cs

    using System;
    using System.Windows.Data;

    namespace ErdBuilder.Shell.Converter
    {
        public class PercentageConverter : IValueConverter
        {
            public object Convert(object value,
                Type targetType,
                object parameter,
                System.Globalization.CultureInfo culture)
            {
                double dblValue = System.Convert.ToDouble(value);
                double dblParameter = System.Convert.ToDouble(parameter);
                double val = dblValue*dblParameter;
                return val;
            }

            public object ConvertBack(object value,
                Type targetType,
                object parameter,
                System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    }

CoreStyles.xaml

    ...
    xmlns:converter="clr-namespace:ErdBuilder.Shell.Converter"
    ...
    <converter:PercentageConverter x:Key="PercentageConverter" />
    ...
    <Border x:Name="TrackRectangle" Height="15">
        <Border Background="SteelBlue" Width="{Binding Converter={StaticResource PercentageConverter},ElementName=TrackRectangle,Path=ActualWidth,ConverterParameter=0.1}"/>
    </Border>

我不明白这个

enter image description here

1 个答案:

答案 0 :(得分:0)

使用此解决方案修复它 - 在解释正确的分隔符时出错(必须将'。'替换为','):

PercentageConverter.cs

    double dblParameter = System.Convert.ToDouble(((string)parameter).Replace('.',','));

而不是

    double dblParameter = System.Convert.ToDouble(parameter);