如果我的問題有點含糊,我很抱歉。Reactiveui命令綁定
我正在研究和學習,我發現一個非常有趣的概念。爲此,我正在使用WPF和Prism構建一個小型應用程序,並且我在理解視圖模型中構建命令的方式方面存在一些困難。
我有,如果完成,將有望澄清事情我一點點的例子:
我想有一個顯示一些數據的網格。這些數據是從Web服務加載的,我的目標是在向用戶顯示視圖時再加載一次,然後每隔一次(例如每分鐘一次)重新加載它,或者在View中的按鈕顯式觸發時加載它。
所以,我的視圖模型目前是這樣的:
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異步命令函數將重新加載Ticket存儲?這個命令也會被暴露的命令LoadTickets觸發。
2)在函數中,loadTickets我將每次從服務中獲取List。如何將此列表轉換爲暴露給UI的ReactiveCollection。
感謝您的信息。問題1完美地工作。對於問題2:由於loadTickets()函數返回列表,因此如何將loadTickets()的結果轉換爲ReactiveCollection 。如果我理解正確,每次調用LoadTickets時,ToProperty方法將獲取loadTickets()的輸出,並將其放入Tickets屬性中。 –
sTodorov
如果你永遠不會改變票的內容(即你只會替換整個東西),你實際上不需要使用'ReactiveCollection',只需使用'List'。否則,我爲你更新了答案 –
非常感謝。我會試試看 – sTodorov