Я действительно должен был сделать это не так давно.Как сказал Руне, мне нужно было написать конвертер.Вы можете использовать мой, если хотите.
Пример использования:
Width="{Binding Width, Converter={StaticResource DoubleOffsetConverter}, ConverterParameter=50%}"
А вот и конвертер.Похоже, ваш вопрос требует только одностороннего преобразования, хотя я не думаю, что было бы слишком сложно реализовать ConvertBack, чтобы сделать его двусторонним, если это необходимо.
public class DoubleOffsetConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
double valueDouble = System.Convert.ToDouble(value);
if (parameter != null)
{
string paramString = parameter.ToString();
double paramDouble;
if (paramString.EndsWith("%"))
{
//
// Multiply by the percentage.
//
if (double.TryParse(paramString.Substring(0, paramString.Length - 1), out paramDouble))
{
return valueDouble * paramDouble / 100.0;
}
}
else if (double.TryParse(parameter.ToString(), out paramDouble))
{
//
// Add the offset.
//
return valueDouble + paramDouble;
}
}
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}