【问题标题】:Data change in DataContext with animation带有动画的 DataContext 中的数据更改
【发布时间】:2012-03-15 13:45:40
【问题描述】:

我不知道用以下代码解决问题:

<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 中实现该解决方案。但不知道。也许有 DataTrigger 和 EnterAction 和 ExitAction 之类的东西?

亲切的问候 肖恩伯勒

【问题讨论】:

    标签: wpf data-binding animation datacontext


    【解决方案1】:

    您可能想尝试查看 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>
    

    【讨论】:

    • 我知道情节提要的基础知识,但问题是当数据发生变化时如何开始情节提要。我认为数据触发器可以帮助我。但我不知道我必须为数据触发器设置哪个属性才能触发更改并使用旧值启动情节提要并使用新值启动情节提要。主要问题是保持旧值。
    • 代码工作正常吗?我的意思是你能在你设置文本绑定的文本框中看到项目名称“项目 1”“项目 2”“项目 3”等等吗?
    • 感谢这个解决方案,我在我的列表框中看到了名字。但这并不能直接说明我在寻找什么^^。 TextBox 应该只是我测试的一个例子。使用您发布的解决方案,我不知道如何淡出更改内容的旧值并淡入新内容。例如,我更改了绑定到 DataContext 中第一项的 TextBox.Text-Property。旧值 - “项目 1”和新值 - 项目 abc”。第一个故事板开始淡出(不透明度为 0)“项目 1”,更改内容并淡入新值“项目 abc”(不透明度为 1 )
    • 嗯,有一个问题,你将无法执行任何 textbox.text 褪色这应该给 stackoverflow.com/questions/2603683/… 你一个清晰的画面......除此之外我不知道如何。但是一种解决方法是使用文本块代替 textbox.text 可能......并且如果有帮助,请不要忘记将其标记为答案..tks
    • 不应为 TextBox.Text 设置动画。当绑定的 DataContext(以及受影响的 ListBoxItems 的数据)发生更改时,应为 ListBox 生成的 ListBoxItem 数据的内容设置动画。也许我就真正的问题谈了很多,对此我很抱歉(我用我的英语尽力而为)。你现在有想法了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2012-10-27
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多