我已经将ReactiveList Orders绑定到了wpf中的datagrid。
我通过遵循以下语法成功获得了一个选定的订单

private Order _selectedOrder;
public Order SelectedOrder
{
    get { return _selectedOrder; }
    set { this.RaiseAndSetIfChanged(ref _selectedOrder, value); }
}
this.WhenAnyValue(x => x.Orders.ItemChanged).Select(x => _selectedOrder = ((Order)x));


但是,如果我在datagrid中多次选择订单,如何获得所选项目?

最佳答案

您的代码似乎没有执行您想要的操作,因为您似乎正在听ReactiveList ItemChanged可观察到的消息(当您的数据源发生更改时将触发该事件),而您要观看的是网格选择。

尽管未经测试,但以下代码似乎可以更好地匹配您要实现的目标(使用reactui-events帮助器):

// in the VM
public IList<Order> SelectedOrders { /* regular RxUI property as usual */ }

// in the view
this.Grid.Events().SelectionChanged
    .Select(_ => this.Grid.SelectedItems.Cast<Order>().ToList())
    .Subscribe(list => ViewModel.SelectedOrders = list);


我是否了解您想要实现的目标?

关于c# - 使用ReactiveUI从ReactiveList获取选定项集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32440637/

10-09 01:10