Сначала создайте файл .cs, где вы регистрируете свои команды. Это может быть названо MyCommandCollection.cs. В этом классе вы определяете и регистрируете свой RoutedCommand с помощью:
public static readonly RoutedCommand ButtonPressCommand= new RoutedCommand("ButtonPress", typeof(MyCommandCollection));
Вы определяете Команду в UserControl или в Окне, в котором вы хотите ее использовать, например.
<UserControl.CommandBindings>
<CommandBinding Command="Commands:MyCommandCollection.ButtonPressCommand" Execute="Execute_ButtonPressCommand" ... />
</UserControl.CommandBindings>
В коде вашего UserControl / Window вы реализуете методы Execute / CanExecute своей команды.
Таким образом, вы можете использовать его также в ResourceDictionary, например так:
<Button Command="Commands:MyCommandCollection.ButtonPressCommand" />
Не забудьте также поместить пространства имен вашего "MyCommandCollectionClass.cs" в UserControl / Window и ResourceDictionary, например:
xmlns:Commands="clr-namespace:MyApp.SomeFolder.Commands"
Надеюсь, это поможет.