如何解决可视化 UI 事件处理EventAggregator 或 MessagingCenter
我编写了两个自定义行为,我称之为 DragBehavior 和 DropBehavior。
DragBehavior 将 PanGestureRecognizer 添加到它的附加视图,并根据它接收到的 Pan 事件进行翻译。此外,在被拖动时,DragBehavior 会发出一个事件,其中包含有关视图屏幕坐标的信息(放置目标使用此信息来了解它们上方是否有被拖动的视图)。
另一方面,DropBehavior 查看其附加的视图父级(预期为 Layout
虽然这工作得很好,但我现在希望能够收听由 DragBehavior 发出的 Drag 事件,而无需先验地期望被拖动的视图是实现 DropBehavior 的视图的兄弟视图(需要放置的视图)。
我发现使用 EventAggregator(可从代码的所有部分访问)或使用 MessagingCenter 可以解决问题,因为 DragBehavior 将发布拖动事件,并且应用程序周围的任何订阅者都可以收听这些事件并做出相应的反应,而无需知道或关心事件的生成位置。
我的问题来了:我无法决定使用哪种方法(如果使用这两种方法之一)。我不喜欢在 MessagingCenter 的消息字符串下耦合应用程序的逻辑的想法,因为在我看来这会让将来调试有点混乱。而 EventAggregator 意味着在应用程序的最高级别有一个静态类(或单例),只有这个 UI 拖动事件的用例。
谁能推荐一个而不是另一个,或者为我提到的问题提供另一种解决方案?
PS:我知道 Xamarin 的拖放手势识别器的存在。但我不喜欢他们展示的用户界面,而且它的自定义选项很差。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。