我在處理託管的自定義Windows 8控件時遇到了「災難性故障」異常,並且已設法將此問題本地化爲非常簡單的測試用例。現在我被卡住了。嘗試動畫自定義枚舉依賴項屬性時出現「災難性故障」
說我有這樣定義的枚舉:
public enum Modes
{
Mode1,
Mode2
}
然後,我有這樣的
定義的依賴項屬性的自定義控制,我要儘量屬性從模式1切換到Mode2通過VisualState像這樣:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="VisualState">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(CustomControl1.Mode)" Storyboard.TargetName="customControl1">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<local:Modes>Mode2</local:Modes>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
要做到這一點,我只是打電話給GoToSta TE()當按鈕被點擊:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
VisualStateManager.GoToState(this, "VisualState", false);
}
而且我得到了臭名昭著的「災難性故障(從HRESULT異常:0x8000FFFF(E_UNEXPECTED))」
我試圖在創建完全相同的測試案例Silverlight和它工作得很好。這是Windows 8 XAML RC錯誤還是我做錯了什麼?
我一直髮現這些「災難性故障」事件是WinRT框架中的一個缺陷,真是無益的錯誤。 您是否嘗試過在視覺狀態下使用標準故事板並使用Visual狀態管理器啓動(離開目標屬性),只更改個人元素 您是否還嘗試過使用字符串作爲依賴屬性而不是枚舉。 會測試自己,但我的Win 8機器目前在別處。 Win 8的這麼多仍然覺得像一個測試版,expecialyl與錯誤;-( – Darkside 2012-07-26 10:46:32
我已經改變它爲int現在,它工作正常(除了它使一個醜陋的API) – 2012-07-26 10:55:32