【问题标题】:Avalonia + ReactiveUI - pharmacist for Events() generationAvalonia + ReactiveUI - Events() 生成的药剂师
【发布时间】:2021-07-22 05:01:38
【问题描述】:

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

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

在 ReactiveUI 文档中,我看到有一个 Pharmacist 集成,它为这些事件生成 observables。但是,当我在后面的代码中获取对 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);

【问题讨论】:

    标签: reactiveui avaloniaui avalonia


    【解决方案1】:

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

    Avalonia Docs - Creating and binding Attached Properties

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

    【讨论】:

    • 提供的链接似乎已失效?。无论如何,最后我确实使用 ReactiveUI 工具注册了 DoubleTapped 事件,如我编辑的问题所示。
    • 文档链接已修复。
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2017-04-07
    • 2017-04-12
    • 1970-01-01
    • 2021-08-25
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多