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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...