Установите CanExecute в качестве метода контекста данных - PullRequest
1 голос
/ 09 марта 2011

Я мог бы пойти по этому поводу неправильно.Я пытаюсь поместить как можно меньше кода в представление, поэтому я хочу, чтобы события CanExecute и Executed моей привязки команд обрабатывались в моей модели представления, которая является моим контекстом данных.

Я уверен, что упускаю что-то действительно простое, но я не могу думать, как это сделать.

XAML для привязки команды:

<UserControl.CommandBindings>
    <CommandBinding Command="DataControls:ParameterCollectionViewModel.UpdateCollection"
                    CanExecute="???"
                    Executed="???"
                    />
</UserControl.CommandBindings>

DataControls:ParameterCollectionViewModel.UpdateCollection - этостатический RoutedCommand, но контекст данных имеет тип ParameterCollectionViewModel (не то, чтобы это имело значение).

Как получить обработчики событий в моем контексте данных как обработчики событий в привязке команды?

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Вы, вероятно, были бы намного счастливее, если бы использовали DelegateCommand или что-то подобное (реализация также существует в источниках Microsoft Prism).

0 голосов
/ 09 марта 2011

Проще говоря, вам нужно добавить команду в ваш текстовый текст. Если datacontext является объектом DependencyObject, вы можете просто добавить новую команду в свойство Commands.

Если datacontext не является свойством зависимости, я лучше надеюсь, что это модель представления. В этом случае вы можете использовать RelayCommand или DelegateCommand (на самом деле они оба одинаковы).

Я являюсь одним из разработчиков Catel , платформы MVVM с открытым исходным кодом, которая также поддерживает команды. Вы можете найти больше информации о командах Catel .

...