2012-07-25 48 views
1

我在處理託管的自定義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錯誤還是我做錯了什麼?

+0

我一直髮現這些「災難性故障」事件是WinRT框架中的一個缺陷,真是無益的錯誤。 您是否嘗試過在視覺狀態下使用標準故事板並使用Visual狀態管理器啓動(離開目標屬性),只更改個人元素 您是否還嘗試過使用字符串作爲依賴屬性而不是枚舉。 會測試自己,但我的Win 8機器目前在別處。 Win 8的這麼多仍然覺得像一個測試版,expecialyl與錯誤;-( – Darkside 2012-07-26 10:46:32

+0

我已經改變它爲int現在,它工作正常(除了它使一個醜陋的API) – 2012-07-26 10:55:32

回答

1

艾倫 - 這(自定義枚舉)是不會工作的WinRT不幸的。

+0

哎喲。甚至在最終版本中,你會推薦使用什麼呢?int工作正常,但是完全沒有上下文,字符串很雜亂。 – 2012-07-27 05:25:00