首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reactiveui命令绑定

Reactiveui命令绑定
EN

Stack Overflow用户
提问于 2012-12-13 04:08:13
回答 1查看 986关注 0票数 2

如果我的问题有点含糊,我提前道歉。

我正在研究和学习reactiveui,我发现这是一个非常有趣的概念。为此,我正在使用WPF和Prism构建一个小型应用程序,并且我在理解View模型中构建命令的方式时遇到了一些困难。

我有一个例子,如果完成了,希望能为我澄清一点:

我想有一个网格,显示一些数据。这些数据是从web服务加载的,我的目标是在视图显示给用户时加载一次,然后每x次(例如,每分钟一次)或在视图中的按钮显式触发时重新加载它。

因此,我的视图模型当前如下所示:

代码语言:javascript
复制
public class MyPageViewModel : ReactiveValidatedObject
{
        /// <summary>
        /// Collection of tickets
        /// </summary>
        public ReactiveCollection<TicketModel> Tickets { get { return _Tickets.Value; } }

        /// <summary>
        /// Private store of tickets
        /// </summary>
        private ObservableAsPropertyHelper<ReactiveCollection<TicketModel>> _Tickets { get; set; }

        /// <summary>
        /// The service which retrieves the tickets
        /// </summary>
        private ITicketService _ticketService;

        public MyPageViewModel() : this(null) { }


        public MyPageViewModel(ITicketService ticketService)
        {
            LoadTickets = new ReactiveAsyncCommand(null, 0);
            }

        /// <summary>
        /// A command which exposes the load action for the tickets
        /// </summary>
        public ReactiveAsyncCommand LoadTickets { get; private set; }

        private void loadTickets()
        {
            //returns a List<TicketModel>
            var tickets = _ticketService.GetTickets();
        }
}

我的问题是:

1)如何注册异步命令,该命令将每x次触发一次,并将调用重新加载票证存储的内部loadTickets函数?此命令也将由已公开的命令LoadTickets触发。

2)在函数中,每次loadTickets i都会从服务中获取一个列表。如何将此列表转换为向UI公开的ReactiveCollection。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-13 10:14:40

1)如何注册异步命令,该命令将每x次触发一次,并将调用重新加载票证存储的内部loadTickets函数?此命令也将由已公开的命令LoadTickets触发。

代码语言:javascript
复制
Observable.Timer(TimeSpan.FromSeconds(10), RxApp.DeferredScheduler)
    .InvokeCommand(LoadTickets);

2)在函数中,每次loadTickets I都会从服务中获取一个列表。如何将此列表转换为向UI公开的ReactiveCollection。

代码语言:javascript
复制
// This makes it so when you invoke LoadTickets.Execute, Tickets
// gets updated.
// NB: Make loadTickets return a List<Ticket>
LoadTickets.RegisterAsyncFunc(x => loadTickets())
    .Select(x => new ReactiveCollection<Ticket>(x))
    .ToProperty(this, x => x.Tickets);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13847742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档