ReactiveUI: CanExecute со свойством не коллекции - PullRequest
0 голосов
/ 21 октября 2011

Я видел вопрос ReactiveUI: использование CanExecute с ReactiveCommand , однако моя проблема в том, что у меня есть строковое свойство UniqueID, и я хочу, чтобы оно выполнялось только тогда, когда его длина равна 7 Кажется, я не могу найти наблюдателя, который не дает сбой программе. Какой правильный простой способ сделать это?

public class MainViewModel : ReactiveValidatedObject
{
    public MainViewModel()
    {
        RetrieveRecord = new ReactiveAsyncCommand(/* what goes here for CanExecute */);
        RetrieveRecord.Subscriber(x => Record = new Record(UniqueId));

        // or do we use the method RetrieveRecord.CanExecute()?
        // the next line crashes the app

        RetrieveRecord.CanExecute(UniqueId.Length == 7);
    }

    public ReactiveAsyncCommand RetrieveRecord { get; private set; }

    string _uniqueId;
    public string UniqueId
    {
        get { return _uniqueId; }
        set
        {
            _clientId = value;
            this.RaisePropertyChanged(x => x.UniqueId);
        }
    }
}

1 Ответ

1 голос
/ 21 октября 2011

Как насчет:

RetrieveRecord = new ReactiveAsyncCommand(
    this.WhenAny(x => x.UniqueId, x => x.Value.Length == 7));
...