2014-04-24 75 views
0

我想獲得一個簡單的骨架ViewModel設置與ReactiveUI 6(測試版),並不斷收到編譯器錯誤(在Xamarin工作室,FWIW)。在RxUI 6中訂閱ReactiveCommand的正確方法是什麼?

代碼:

using System; 
using System.Reactive; 
using System.Reactive.Linq; 
using ReactiveUI; 

// ... 

public IReactiveCommand TryAuthenticateCommand { get; protected set; } 

// ... 

this.TryAuthenticateCommand = ReactiveCommand.Create(
this.WhenAny(
    x => x.Username, 
    x => x.Password, 
    (username, password) => 
     !string.IsNullOrWhiteSpace(username.Value) && 
     !string.IsNullOrWhiteSpace(password.Value))); 
this.TryAuthenticateCommand.Subscribe(x => MessageBus.Current.SendMessage("Yes!")); 

錯誤:

Error CS0411: The type arguments for method `System.ObservableExtensions.Subscribe<T>(this System.IObservable<T>, System.Action<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly (CS0411) 

回答

2

此代碼是完美的,我以爲你只是缺少一個using語句, 「使用System.Reactive」

更新:這不起作用的原因是不在代碼片段中的代碼。您宣稱TryAuthenticateCommandIReactiveCommand,它不會執行IObservable<T>T是什麼?)。

在這種情況下,由於您沒有提供異步方法來處理它,因此ReactiveCommand會返回CommandParameter,它是一個object。所以聲明它爲ReactiveCommand<object>和一切正常

+0

試圖添加'使用System.Reactive;'並沒有區別。 –

+0

System.Reactive.Linq?我永遠不會記得那個擴展方法的生命 –

+0

是的,我已經得到了它們(見更新的問題)。任何其他? :) –

相關問題