因此,假設我想以動態方式修改多個視覺元素的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保持綁定?