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数据的内容应设置动画。也许我会围绕真正的问题谈论很多,我会尽我最大的努力学习英语。现在有你的想法了吗?