微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Avalonia + ReactiveUI - Events() 生成药剂师

如何解决Avalonia + ReactiveUI - Events() 生成药剂师

我正在尝试大致了解 Avalonia,尤其是 Reactive UI 集成。通过谷歌搜索,我了解到 Avalonia 在 ReactiveUI 中取消了对 Avalonia 的支持,并尝试将 ReactiveUI 集成到 Avalonia 本身中,以支持有时不稳定的 Avalonia API。

我正在实现一个流程,其中双击 DataGrid 行应该打开一个详细信息窗口,我可以通过在后面的代码中为 DoubleTapped 事件添加一个处理程序来实现。但是,我想知道我是否可以通过观察 DoubleTapped 事件以响应式 UI 方式在 WhenActivated() 实现中执行此操作。

在 ReactiveUI 文档中,我看到有一个 Pharmacist 集成,它为这些事件生成可观察的。但是,当我在后面的代码获取对 DataGrid 的引用时,并尝试通过 myDataGrid.Events(). ...,我看不到任何事件。这是否意味着 Avalonia 目前没有此类支持

最后,当我在做的时候,如果我忘记了响应式 UI 支持,并使用了一个直接的事件处理程序,我需要做一些事情来检测它是否是被双击的行,或者其他什么其他(如标题)。我必须这样做,因为据我了解,Avalonia 中没有 EventSetter 实现。

有人知道 Avalonia 将来是否会支持这个吗?

编辑:最后我使用的 ReactiveUI 有点类似于

TreeView.Getobservable(DoubleTappedEvent)
                .Subscribe(async x =>
                {
                    var selectedItem = TreeView.SelectedItem;
                    if (selectedItem is TreeNodeviewmodel treeNodeviewmodel)
                    {
                        await viewmodel!.ActivateResource(treeNodeviewmodel);
                    }
                }).disposeWith(d);

解决方法

附加行为还有助于绑定事件以执行逻辑。如果 DoubleTappedEvent 被触发,有一个示例看起来可以工作。

Avalonia Docs - Creating and binding Attached Properties

开发工具应该有助于显示您正在通过 DataGrid 寻找隧道和气泡的事件吗?

AvaloniaUI Dev tools showing the DoubleTapped event

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。