Set custom attached property on StoryBoard

2019-02-18 04:21发布

I have a storyboard and would like to set the attached property VisualStateUtility.InitialState. I've tried various combinations, but the property never gets resolved.

I get the following error: Cannot resolve TargetProperty (VisualStateUtility.InitialState)

How can I set the value of my custom attached property on the 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));

2条回答
ゆ 、 Hurt°
2楼-- · 2019-02-18 04:58

This should do the trick

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

Notice how a name is added to the animation, the parentheses are removed from the target property name, which is then prefixed with the xmlns alias from the xaml header.

In your code behind you'll have to add this:

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

Apparently this last step is required for animating custom attached properties. A real pain if you'd ask me.

查看更多
在下西门庆
3楼-- · 2019-02-18 05:00

I ran into this:

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

Which another user says it's un-supported.

Frank Lan Writes:

Hi, It's a known issue. And the workaround seems to be: animate the custom attached property from code instead of xaml. Sorry for any inconvenience caused by the issue. Frank Lan Microsoft Online Community Support

查看更多
登录 后发表回答