Взгляните на RoutedCommand s.
Определите вашу команду в myclass где-то следующим образом:
public static readonly RoutedCommand Login = new RoutedCommand();
Теперь определите вашу кнопку с помощью этой команды:
<Button Command="{x:Static myclass.Login}" />
Вы можете использовать CommandParameter для дополнительной информации ..
Теперь последнее, но не менее важное: начинайте слушать вашу команду:
В конструкторе класса, который вы хотите сделать несколько хороших вещей, вы помещаете:
CommandBindings.Add(new CommandBinding(myclass.Login, ExecuteLogin));
или в XAML:
<UserControl.CommandBindings>
<CommandBinding Command="{x:Static myclass.Login}" Executed="ExecuteLogin" />
</UserControl.CommandBindings>
И вы реализуете делегат, необходимый для CommandBinding:
private void ExecuteLogin(object sender, ExecutedRoutedEventArgs e)
{
//Your code goes here... e has your parameter!
}
Вы можете начать слушать эту команду повсюду в вашем визуальном дереве!
Надеюсь, это поможет
PS Вы также можете определить CommandBinding с делегатом CanExecute, который даже отключит вашу команду, если CanExecute скажет:
PPS Вот еще один пример: RoutedCommands в WPF