Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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 通过动画在DataContext中更改数据_Wpf_Data Binding_Animation_Datacontext - Fatal编程技术网

Wpf 通过动画在DataContext中更改数据

Wpf 通过动画在DataContext中更改数据,wpf,data-binding,animation,datacontext,Wpf,Data Binding,Animation,Datacontext,我不知道如何使用以下代码解决此问题: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Window.Resources> <XmlDataProvider x:Key="InternalData" XPath="/Workspace

我不知道如何使用以下代码解决此问题:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <Window.Resources>
    <XmlDataProvider x:Key="InternalData" XPath="/Workspace">
      <x:XData>
        <Workspace Name="Workspace" xmlns="">
          <Project Name="Project 1"/>
          <Project Name="Project 2"/>
          <Project Name="Project 3"/>
        </Workspace>
      </x:XData>
    </XmlDataProvider>
  </Window.Resources>

  <StackPanel DataContext="{StaticResource InternalData}">
    <ListBox ItemsSource="{Binding XPath=//Workspace/Project}">
      <ListBox.ItemTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding XPath=@Name}"/>
        </DataTemplate>
      </ListBox.ItemTemplate>
    </ListBox>        
    <TextBox Text="{Binding XPath=//Workspace/Project[1]/@Name, Mode=TwoWay}"/>

  </StackPanel>
</Window>
如您所见,我可以使用文本框更改工作区中第一个项目的名称。 通过更改数据,我希望启动动画以淡出旧值,更改值并启动动画以淡入新值,例如,项目1的不透明度从1更改为0,将数据和不透明度从0更改为1 如果可能的话,我只想在XAML中实现这个解决方案。但是不知道。可能是数据触发、进入和退出之类的东西

问候
Shounborugh

您可能想尝试查看WPF故事板。如果希望仅使用XAML启动动画,这是一种常见做法。这是在WPF中开始讲述故事板的最佳地方

这是在更改文本框中的文本时启动情节提要的方式

<TextBox Height="23" HorizontalAlignment="Left" Margin="90,44,0,0" Name="textBox1" VerticalAlignment="Top" Width="120">
            <TextBox.Triggers>
                <EventTrigger RoutedEvent="TextBox.TextChanged">
                    <BeginStoryboard>
                        <Storyboard>

                        </Storyboard>

                    </BeginStoryboard>
                </EventTrigger>

            </TextBox.Triggers>

        </TextBox>

我知道故事板的基本知识,但问题是当数据发生变化时,如何开始故事板。我以为数据触发器可以帮我。但我不知道必须将哪个属性设置为datatrigger才能触发更改,并使用旧值启动情节提要,使用新值启动情节提要。主要问题是保留旧值。代码是否正常工作?我的意思是,您是否能够在文本框中看到项目名称project 1 project 2 proeject 3等,您已将文本设置为绑定?感谢此解决方案,我在列表框中看到了这些名称。但这并不是我想要的。文本框应该只是我要测试的一个示例。有了你发布的解决方案,我不知道如何淡化变化内容的旧价值,以及如何淡化新内容的旧价值。例如,我更改了绑定到DataContext中第一项的TextBox.Text-Property。旧价值-项目1和新价值-项目abc。第一个故事板开始淡出不透明度为0项目1,更改内容并淡出新值项目abc Opacity为1。有一个陷阱,您将无法执行任何文本框。文本淡出这将为您提供清晰的图片。。除此之外,我不知道怎么做。但一种解决方法是使用textblock代替textbox.text。。如果有帮助的话,别忘了把它标记为答案。tk不是文本框。文本应该是动画的。当绑定的DataContext和受影响的ListBoxItems的数据发生更改时,ListBox生成的包含ListBoxItem数据的内容应设置动画。也许我会围绕真正的问题谈论很多,我会尽我最大的努力学习英语。现在有你的想法了吗?