因此,假设我想以动态方式修改多个视觉元素的DataContext,并且我想这样做是作为Storyboard的一部分。我可以做到这一点,像这样:有没有办法将一个绑定分配给一个值,而不是绑定XAML中的值?
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SomeVisualElement" Storyboard.TargetProperty="(FrameworkElement.DataContext)" Duration="0:0:0" >
<DiscreteObjectKeyFrame KeyTime="0:0:0" >
<DiscreteObjectKeyFrame.Value>
<Binding Path="Repository.GeneratedThings[0].Element" />
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
这有约束力的DiscreteObjectKeyFrame到Repository.GeneratedThings [0] .Element价值的影响。应用此Storyboard时,SomeVisualElement的DataContext被设置为Repository.GeneratedThings [0] .Element。这相当于,我觉得说的,:
<UserControl x:Name="SomeVisualElement" DataContext="{Binding Path="Repository.GeneratedThings[0].Element"} />
这是功能性的,但我想这样做是有一些方法的结合仅维持在视觉元素,但不是在关键帧。我们有很少的视觉元素,但是有许多Storyboard和KeyFrames,当我们更新GeneratedThings对象(而不是集合中的单个元素)时,我们注意到与KeyFrames的数量成正比的性能。
如何设置DiscreteObjectKeyFrame,以便DataContext正确结束绑定,但DiscreteObjectKeyFrame的值未绑定?这是否是一个合理的语义区别WPF/XAML之间的值是一个绑定和一个值绑定?
另外,是否有另一种方法来改变Storyboard内的几个视觉元素的DataContext,并且不涉及让每个Storyboard保持绑定?