2011-09-22 39 views
4

我有一個故事板並希望設置附加屬性VisualStateUtility.InitialState。我嘗試過各種組合,但屬性永遠不會解決。在StoryBoard上設置自定義附加屬性

我得到以下錯誤:無法解析TargetProperty(VisualStateUtility.InitialState)

我如何設置情節提要我的自定義附加屬性的值?

<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

你能提供你附屬物的聲明嗎?您不會通過TargetProperty中的完全限定名稱來引用它,因爲這些點只是指子成員,而不是名稱空間。只是短版「InitialState」。 –

+0

...並且當您確實添加了12小時前所做的更改時,請確保您添加了後續評論,以便我們實際注意到:) –

+0

+1提供了代碼。使它更容易看到出了什麼問題:) –

回答

0

我碰到了這一點:

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

另一個用戶說,這是聯合國的支持。

弗蘭克蘭寫入:

嗨, 這是一個衆所周知的問題。解決方法似乎是:從代碼而不是xaml爲自定義附加屬性設置動畫。 由此問題造成的不便,敬請原諒。 弗蘭克·蘭 微軟在線社區支持

+0

我不認爲這是正確的。我相信我有動畫附加屬性之前...怪異... –

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)); 

顯然,這最後一步是需要自定義動畫附加屬性。如果你問我,真是痛苦。