gpt4 book ai didi

c# - 动画化 TreeView 中项目的添加/删除 - WPF

转载 作者:太空狗 更新时间:2023-10-29 21:55:35 26 4
gpt4 key购买 nike

我知道有人问过与 ItemsControl 中的动画项目相关的类似问题,因此如果发布了可接受的答案,那么如果我能指出正确的方向就太好了。

我有一个数据绑定(bind)的 TreeView,其中的层次结构永远只有一层深。它可以有 X 个根节点和 X 个子节点。然而,这已经很深了。我面临的问题是如何最好地动画添加/移动/删除数据绑定(bind)集合中的项目。

TreeView 的 ItemContainerStyle 设置为自定义 ControlTemplate,以提供 MouseOver 和 Selected 样式。然后我使用 HierarchialDataTemplate 进一步布局绑定(bind)到它的不同类型的项目。

我找到了许多演示如何为项目的展开设置动画的示例,但在添加/移动/删除项目时的动画方面还不是很多。找到一个例子 here显示了我所追求的大部分内容,但包含了大量代码和库引用,换句话说,我认为这些是无关紧要的。我不反对合并我自己的类似功能版本。我只是希望我可以连接到事件触发器或等效物以实现相同的目标。

我没有发布任何示例代码,因为我对任何解决方案都持开放态度,并且没有编写任何“不起作用”且需要修复的内容。我或多或少正在寻找关于从哪里开始的意见。所应用的动画类型也无关紧要,因为只要我知道如何为添加/移动/删除设置动画,我就可以修改和更改代码以适合我的喜好和整体最终效果。

最佳答案

因为我认为您是在问“我应该如何解决这个问题?”我可以给你一些建议。

你手头有两个基本问题:

  • 您要达到的效果的机制
  • 将该效果连接到您的程序架构中

对于第一个问题,我建议使用简单的非 MVVM 应用程序对效果进行原型(prototype)设计。特别是你可以使用你引用的链接中的 VisualStateManager 想法和你已经熟悉的 Animation 概念和良好的老式代码隐藏,没有复杂的库来获取树插入、运动和移除效果有效。请记住,稍后您将尝试摆脱所有代码隐藏,并且这仅用于原型(prototype)设计。基本上,您将该链接移植到代码隐藏并删除它使用的任何内容。

一旦您获得了您想要达到的效果,现在您将遇到一个古老的 MVVM 问题,即通过“松散耦合”使其与您的 View 模型一起工作。 WPF 使数据绑定(bind)属性变得简单明了,因此 MVVM 是全世界数据的 MVVM。但是对于操作来说,要将事件与操作干净利索地连接起来有很多很多障碍,而且每个 MVVM 框架似乎都以不同的方式做到这一点。 MVVMLight 有 EventToCommandSystem.Windows.InteractivityCallMethodAction 并且它一直在继续。

因此,要将您的效果与您选择的 MVVM 框架集成,请使用该框架的机制将事件连接到操作,无论是什么。但是,您可以始终使用一些代码隐藏来处理您的 View ,或者如果您找不到其他方法来使粘合工作,则可以将事件直接分派(dispatch)到您的 View 模型。这取决于你。

关于c# - 动画化 TreeView 中项目的添加/删除 - WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com