Wpf 有没有一种方法可以将绑定分配给值,而不是在XAML中绑定值?
因此,假设我想以动态方式修改几个视觉元素的DataContext,并且我想将其作为故事板的一部分。我可以这样做:Wpf 有没有一种方法可以将绑定分配给值,而不是在XAML中绑定值?,wpf,xaml,binding,storyboard,Wpf,Xaml,Binding,Storyboard,因此,假设我想以动态方式修改几个视觉元素的DataContext,并且我想将其作为故事板的一部分。我可以这样做: 这具有将DiscreteObjectKeyFrame的值绑定到Repository.GeneratedThings[0]元素的效果。应用此情节提要时,SomeVisualElement的DataContext设置为Repository.GeneratedThings[0]。元素。我认为这相当于说: 假设您有以下代码: <ObjectAnimationUsingKeyFram
这具有将DiscreteObjectKeyFrame的值绑定到Repository.GeneratedThings[0]元素的效果。应用此情节提要时,SomeVisualElement的DataContext设置为Repository.GeneratedThings[0]。元素。我认为这相当于说:
假设您有以下代码:
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SomeVisualElement" Storyboard.TargetProperty="SomeProperty" Duration="0:0:0" >
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value={Binding Foo} />
</ObjectAnimationUsingKeyFrames>
这里应该注意两个问题
每个故事板都必须保持这种绑定李>
当运行这个故事板时,实际上Foo的当前值将设置为SomeProperty。Foo的后一个变化不会受到影响
我建议如下。使用Foo作为依赖项属性创建一些依赖项对象。例如:
<Grid.Resources>
<viewModel:FooContainer Foo={Binding Foo} x:Key="FooContainer" />
</Grid.Resources>
在情节提要中使用此容器
修改控件的ContentTemplate,以便可以绑定到Foo属性本身。因此,您可以将绑定而不是Foo的值直接传输到控件。故事板也不会受到Foo值更改的影响
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SomeVisualElement" Storyboard.TargetProperty="SomeProperty" Duration="0:0:0" >
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value={StaticResource FooContainer} />
</ObjectAnimationUsingKeyFrames>