Я пытаюсь разобраться в Avalonia в целом и в интеграции Reactive UI в частности. Погуглив, я понял, что Avalonia отказалась от поддержки Avalonia в ReactiveUI и пытается интегрировать ReactiveUI в саму Avalonia, чтобы поддерживать иногда нестабильный API Avalonia.
Я реализую поток, в котором двойное нажатие на строку DataGrid должно открывать окна сведений, что я могу сделать, добавив обработчик для события DoubleTapped в код позади. Однако мне было интересно, могу ли я сделать это в режиме Reactive UI, в реализации WhenActivated (), наблюдая за событием DoubleTapped.
В документации ReactiveUI я вижу, что есть интеграция Pharmacist, которая генерирует наблюдаемые для этих событий. Однако, когда я получаю ссылку на DataGrid в коде позади и пытаюсь подключиться к DoubleTapped через myDataGrid.Events(). ...
, я не вижу никаких событий. Означает ли это, что в Авалонии в настоящее время нет такой поддержки?
Наконец, пока я занимаюсь этим, если я забываю о поддержке Reactive 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);