Последний является более глобальным обработчиком по сравнению с первым, который используется для каждого экземпляра.
Кроме того, RegisterClassCommandBinding не может быть незарегистрированным, поэтому вы застряли с ним после регистрации.Как правило, при использовании этого лучше всего вызывать виртуальные методы на вашем элементе управления, чтобы их поведение можно было изменить или пропустить.
С помощью CommandBindings вы можете удалить любые привязки, которые больше не нужны.Это также может быть сделано внешними пользователями вашего контроля.Таким образом, вы можете добавить обязательную привязку команды, но кто-то может легко сделать element.CommandBindings.Clear()
.
Так что есть различия, и у каждого есть свое место.Если вы хотите, чтобы это было легко настраиваемым, я бы пошел с первым.