0

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

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

在 ReactiveUI 文档中,我看到有一个 Pharmacist 集成,它为这些事件生成 observables。但是,当我在后面的代码中获取对 DataGrid 的引用并尝试通过 DoubleTapped 挂钩时 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);
4

1 回答 1

0

附加的行为还可以帮助绑定事件以执行逻辑。有一个样本看起来可以工作,前提DoubleTappedEvent是它被解雇了。

Avalonia Docs - 创建和绑定附加属性

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

显示 DoubleTapped 事件的 AvaloniaUI 开发工具

于 2021-05-11T13:52:36.857 回答