我正在尝试总体上了解 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);