4

我有一个故事板,想设置附加属性 VisualStateUtility.InitialState。我尝试了各种组合,但该属性从未得到解决。

我收到以下错误:无法解析 TargetProperty (VisualStateUtility.InitialState)

如何在 Storyboard 上设置自定义附加属性的值?

<ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="(Fully.Qualified.Namespace.VisualStateUtility.InitialState)"  Storyboard.TargetName="ExpanderButton">

    public static string GetInitialState(DependencyObject obj)
    {
        return (string)obj.GetValue(InitialStateProperty);
    }

    public static void SetInitialState(DependencyObject obj, string value)
    {
        obj.SetValue(InitialStateProperty, value);
    }

    // Using a DependencyProperty as the backing store for InitialState.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty InitialStateProperty =
        DependencyProperty.RegisterAttached("InitialState", typeof(string), typeof(VisualStateUtility), new PropertyMetadata(null,OnInitialStatePropertyChanged));
4

2 回答 2

1

这应该可以解决问题

<ObjectAnimationUsingKeyFrames x:Name="animation" Duration="0" Storyboard.TargetProperty="xmlnsAlias:VisualStateUtility.InitialState"  Storyboard.TargetName="ExpanderButton">

请注意如何将名称添加到动画中,从目标属性名称中删除括号,然后以 xaml 标头中的 xmlns 别名作为前缀。

在您后面的代码中,您必须添加以下内容:

InitializeComponent();
Storyboard.SetTargetProperty(animation, new PropertyPath(Fully.Qualified.Namespace.VisualStateUtility.InitialState));

显然,动画自定义附加属性需要最后一步。如果你问我,真的很痛苦。

于 2012-01-17T21:20:35.030 回答
0

我遇到了这个:

http://forums.silverlight.net/t/182227.aspx

另一个用户说它不受支持。

弗兰克·兰写道:

您好,这是一个已知问题。解决方法似乎是:从代码而不是 xaml 为自定义附加属性设置动画。对此问题造成的任何不便,我们深表歉意。Frank Lan Microsoft 在线社区支持

于 2011-10-03T22:37:51.823 回答