Что такое WCF RIA Command

Что такое WCF RIA Command? Это вообще правильное имя?

У меня есть приложение Silverlight, в котором я хочу использовать привязку команд для вызова методов на веб-сервере; однако я не уверен, как создать такой класс и метод, чтобы RIA мог его подобрать и использовать в Silverlight XAML; без какого-либо кода позади.


person Community    schedule 17.03.2011    source источник


Ответы (1)


«команда» в контексте приложения Silverlight (или WPF) — это класс, реализующий интерфейс ICommand.

Он используется для привязки кода в ViewModels к элементам управления в представлениях.

Почти все приличные MVVM-фреймворки содержат их (PRISM имеет DelegateCommand, MvvmLight имеет RelayCommand и т. д.), но не так уж сложно написать свой собственный...

Пример использования:

в XAML:

<Button Command="{Binding GetCommand}" Content="Get" />

затем в ViewModel (с привязкой к DataContext представления)

public ICommand GetCommand
{
    get
    {
        if (_getCommand == null) _getCommand = new RelayCommand(GetHandler, CanGetPredicate);
        return _getCommand;
    }
}

private void GetHandler()
{
    // Do the work here - call into the server, or whatever.
}

private bool CanGetPredicate()
{
    // work out if it is valid for this to be called or not
    return (someRule == true); // or whatever
}
person kiwipom    schedule 17.03.2011
comment
Таким образом, этот код будет на стороне сервера прикреплен к одному из объектов? - person ; 17.03.2011
comment
Инстинктивно я бы сказал, что ViewModel должна быть на стороне клиента; прямо рядом с видом, но я не сделал достаточно в службах RIA, чтобы сказать, верно ли это в данном случае. Я нашел эту статью, которая может объяснить немного больше... silverlightshow.net/items/ - person kiwipom; 17.03.2011
comment
Спасибо, теперь я лучше понимаю. - person ; 17.03.2011