Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 有没有一种方法可以将绑定分配给值,而不是在XAML中绑定值?_Wpf_Xaml_Binding_Storyboard - Fatal编程技术网

Wpf 有没有一种方法可以将绑定分配给值,而不是在XAML中绑定值?

Wpf 有没有一种方法可以将绑定分配给值,而不是在XAML中绑定值?,wpf,xaml,binding,storyboard,Wpf,Xaml,Binding,Storyboard,因此,假设我想以动态方式修改几个视觉元素的DataContext,并且我想将其作为故事板的一部分。我可以这样做: 这具有将DiscreteObjectKeyFrame的值绑定到Repository.GeneratedThings[0]元素的效果。应用此情节提要时,SomeVisualElement的DataContext设置为Repository.GeneratedThings[0]。元素。我认为这相当于说: 假设您有以下代码: <ObjectAnimationUsingKeyFram

因此,假设我想以动态方式修改几个视觉元素的DataContext,并且我想将其作为故事板的一部分。我可以这样做:


这具有将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>