DataContext中的数据更改与动画

时间:2012-03-15 13:45:40

标签: 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">
      <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>

如您所见,我可以使用TextBox更改工作区中第一个项目的名称。 通过更改数据,我想开始动画淡出旧值,更改值并启动动画以淡入新值(例如,“项目1”的不透明度从1到0,更改数据和不透明度“ “从0到1) 如果可能,我想只在XAML中实现解决方案。但不知道。也许是DataTrigger和EnterAction以及ExitAction之类的东西呢?

亲切的问候 Shounborugh

1 个答案:

答案 0 :(得分:0)

您可能想尝试查看WPF故事板。如果您只想使用XAML启动动画,这是一种常见做法。这是在WPF中开始讲故事板的最佳场所 http://msdn.microsoft.com/en-us/library/ms742868.aspx

这是在更改文本框中的文本后启动故事板的方法

<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>