我当前有一个列表框,其所选项目绑定到我的 ViewModel 上的属性。每当所选项目不为空时,我想对其执行动画。但是我不断收到以下错误“无法冻结此情节提要时间线树以供跨线程使用”并通过研究了解为什么会发生这种情况。但是我不确定需要采取什么方法才能获得我想要的行为。
<Storyboard x:Key="ShowItemEdit">
<DoubleAnimation
Storyboard.TargetName="lstItemList"
Storyboard.TargetProperty="ListBox.Width"
To="{Binding ActualWidth, ElementName=UserControl}"
Duration="0:0:0.40" />
...
</Storyboard>
<Style x:Key="ListStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedItem, Converter={StaticResource IsNullConverter}}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource ShowItemEdit}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
<ListBox x:Name="lstItemList" Style={StaticResource ListStyle}" SelectedItem="{Binding SelectedItem}">
...
</ListBox>
你能发布你的故事板吗?听起来您在故事板定义中有某种绑定。
好吧,正如我怀疑的那样,这是因为你正在使用Binding
在你的Storyboard
。你不能这样做,因为 WPF 试图freeze http://msdn.microsoft.com/en-us/library/ms750509.aspx模板为了提高效率而利用的所有资源,以及当您在某个对象上使用绑定时Freezable http://msdn.microsoft.com/en-us/library/system.windows.freezable.aspx,在这种情况下Storyboard
,它可以防止其被冻结。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)