我在处理托管的自定义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