wpf - 为用户控件绘制的 Helix Toolkit 控件设置动画
问题描述
我正在尝试实现与此非常相似的东西:
但是,我的情况略有不同。我正在尝试对由路径(TubePath)定义的管(曲线)进行动画处理,该路径作为由数学函数(以数值计算)定义的时间(动画)的函数而发生变形。
我的设计/计划是使用用户控件(包含 Helix Tube 控件)来绘制由路径定义的管的每一帧。我计划在我的用户控件中创建 TubePath 属性,它是一个 oservablecollection 依赖属性。我计划通过将 ViewModel 的 CurrentPath 属性绑定到 usercobtrol TubePath 属性来从我的 ViewModel(或 View)控制动画。我计划从 INotifyPropertyChanged 驱动我的 ViewModel。在我的模型中启动动画之前,我将存储路径列表 (PathList)。在每个(所谓的)时间或动画步骤中,我会将相应的路径从 PathList 复制到 VieModel 中的 CurrentPath。我希望 ViewModel 中 CurrentPath 集合的更改将激活绑定,这将强制用户控件更新用户控件绘制的管。
这些是我的问题:
(1) 我读到并非所有对 ObservableCollection 的更改都会触发 propertychanged 事件。覆盖或引用 ViewModel 中的整个 CurrentPath 集合会更新 UserControl 中的 TubePath,这将强制重绘曲调吗?我必须做任何特别的事情来实现这种绑定吗?
(2) 我是 WPF 和 WPF 动画的新手。我的研究表明,我可以通过多种方式从 ViewModel 制作动画:使用上面给出的示例中的 Dispatcher.Invoke(),或者我可以使用 RenderingEventManager.AddListener()(和 RenderingEventManager.RemoveListener() 来停止动画) 由 Helix Toolkit 提供,就像在此处的示例中所做的那样:
或者我可以使用 DispatcherTimer() 循环,如下所示:
自定义用户控件的 DependencyProperty 绑定未在更改时更新
任何关于最佳方法的建议以及我从 ViewModel 驱动动画的概念将不胜感激。
解决方案
推荐阅读
- python - 在带有 Bokeh serve 的图中使用标签和 openstreetmap
- python - 在类的 Sphinx 文档中添加方法表
- ruby-on-rails - 数组上的 .map 不起作用(Ruby on rails)
- ldap - 来自受信任域的用户的 ldap 查询问题
- batch-file - add watermark and scale the video in Batch using ffmpeg
- mysql - SQLSTATE[42S02] - 来自子查询
- wordpress - 进入灯箱后,整个 WooCommerce 产品页面消失
- spring-cloud - Spring-cloud-gateway:请求中超过 30 个标头时的 HTTP400
- flutter - 如何只编写一个函数来增加颤动中的不同计数器变量?
- python - 对元组列表的一部分进行排序