PRISM WPF和Xaml过渡剂的材料设计



我正试图使用带有PRISM 7 WPF应用程序的Transitioner from MaterialDesignInXaml作为导航动画的区域。从某种意义上说,这两个"工作"在一起,即视图导航是成功的,但只有第一个视图具有动画效果。在四处寻找之后,我用一个新的RegionBehavior创建了我自己的RegionAdapter,我从PRISM复制了它来玩。

我有一个想法,可能在转换程序有机会制作启用其动画的容器之前,同步事件处理程序就已经启动了。我注意到的可疑行为是,当执行这一行时,它会清除Transitioner的SelectedItem,并且动画不会启动。(这是上周五,所以很抱歉周一早上有点模糊。(

因此,我添加了一个真正复杂的机制,允许转换符在相当于这行的位置"追赶"(await Task.Delay(1)(,动画开始工作。现在,当视图被停用时,它不会清除SelectedItem。

我的问题是,我为什么以及如何才能做得更优雅?我对自定义WPF UI控件没有太多的经验。我真的不喜欢我所拥有的,基本上是一个分叉的SelectorRegionAdapter,有一个等待发生的竞争条件。

我最终深入研究了MaterialDesignInXaml代码库,发现除非加载视图,否则Transitioner不会触发动画。因此,我最终用FrameworkElement.Loaded事件的事件处理程序替换了我的Task.Delay(1)

因此,我最终使用了库的SelectorRegionAdapter的90%,除了它选择我侦听的新活动视图Loaded,然后一旦发生这种情况,我就选择新视图。

最新更新