Хотя в XAML вы не можете использовать множитель, вы можете создать класс IValueConverter для этого. Например:
class Multiplier : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
var dblValue = 1.0;
if (value is double)
dblValue = (double)value;
else if ( !(value is string) || !double.TryParse( (string)value, out dblValue ) )
return null;
var dblParam = 1.0;
if (parameter is double)
dblParam = (double)parameter;
else if ( !(parameter is string) || !double.TryParse( (string)parameter, out dblParam ) )
return null;
return dblValue * dblParam;
}
public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
throw new NotImplementedException();
}
}
Затем вы можете использовать это в XAML, чтобы увеличить и уменьшить ширину текстового поля таким фактором, как ...
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textBox" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="{Binding ElementName=textBox, Path=Width, Converter={StaticResource Multiplier}, ConverterParameter=2}" KeySpline="0.54,0.27,0.38,0.69"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="textBox" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame KeyTime="0:0:0.4" Value="{Binding ElementName=textBox, Path=Width, Converter={StaticResource Multiplier}, ConverterParameter=0.5}" KeySpline="0.54,0.27,0.38,0.69"/>
</DoubleAnimationUsingKeyFrames>