Здравствуйте, Ed.ward, Вы писали:
EW>Собвственно вопрос, почему привязка свойства работает, а привязка команды нет?
Привязка то работает в обоих случаях. Binding отвечает только за связь со свойством, а не за использование свойства. В обоих случаях связь устанавливается. Другое дело, что кнопка, при присваивании команды, подписывается на ее событие CanExecuteChanged. Откуда эта команда пришла — через Binding или через local value — кнопку не волнует. В обработчике CanExecuteChanged вызывается корректировка свойства IsEnabled, при которой происходит вызов VerifyAccess, что приводит к исключению.
EW>И как сделать, чтобы и с командой всё работало так же как и со свойством?
Несколько вариантов:
Написать команду, которая будет вызывать CanExecuteChanged через Application.Current.Dispatcher.
Сделать аналогичное, но в модели. Менять доступность команды через Application.Current.Dispatcher.
В свойстве, которое возвращает команду, запоминать SynchronizationContext.Current и менять доступность команды через этот SynchronizationContext.
если не подходит, можно придумать еще