我在Blend中编辑了一个按钮(使用编辑当前模板)。我添加了鼠标等动画,按钮按预期工作。
然而,在鼠标悬停事件上,我有一个可以缩放的形状。我想要做的是为用户提供在XAML中设置旋转和缩放属性的选项。
例如,像这样:
<Button Height="76" Content="Gallery" Style="{StaticResource RotatingAnimationButton}" " Scaling="2.0" >
我在模板中的位置:
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Document" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].
(ScaleTransform.ScaleX)">
其中Value =“1.5”将更改为“2.0”。
目前,我所拥有的只是模板的样式。我不确定是否可以传递参数或者我必须创建某种用户控件?
JD
注意:此问题最初发布为Silverlight和WPF。但正如您将看到它只适用于Silverlight,这就是为什么提供的优秀解决方案给我带来了问题。
答案 0 :(得分:2)
您有两个不错的选择:
Button
并添加“缩放”属性,或在任何一种情况下,你的动画都可以绑定它。
除非您的按钮是以其他方式自定义的,否则我通常会使用随附的属性。您将使用标准的附加属性模板(使用“propa”代码段):
public class MyAttachedProperties
{
// Scaling
public static double GetScaling(DependencyObject obj) { return (double)obj.GetValue(ScalingProperty); }
public static void SetScaling(DependencyObject obj, double value) { obj.SetValue(ScalingProperty, value); }
public static readonly DependencyProperty ScalingProperty = DependencyProperty.RegisterAttached("Scaling", typeof(double), typeof(MyAttachedProperties));
}
在使用该按钮的代码中,您可以像这样引用它:
<Button Height="76" Content="Gallery"
Style="{StaticResource RotatingAnimationButton}"
local:MyAttachedProperties.Scaling="2.0" />
在模板中,您可以像这样绑定它:
Value="{Binding Path=(local:MyAttachedProperties.Scaling),
RelativeSource={RelativeSource TemplatedParent}}"
XAML的这两个部分假设你有xmlns:local定义为包含MyAttachedProperties类。