虽然 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>