Один из способов поиграться с кнопкой включения и выключения в WPF - это использовать RoutedCommands вместо click_events.Для этого есть 4 шага:
1) Назначьте статический ресурс для каждой кнопки, которую вы используете, в качестве ресурса для родительского элемента пользовательского интерфейса.Предположим, например, что у вас есть Grid в качестве родителя для этих кнопок:
<Grid>
<Grid.Resources>
<RoutedCommand x:Key="cmdButtonCommandName" />
</Grid.Resources>
...
</Grid>
2) Определите привязку CommandBinding для каждой команды под тем же родителем.Код становится следующим:
<Grid>
<Grid.Resources>
<RoutedCommand x:Key="cmdButtonCommandName" />
</Grid.Resources>
<Grid.CommandBindings>
<CommandBinding CanExecute="CmdButtonCommandName_CanExecute"
Command="{StaticResource cmdButtonCommandName}"
Executed="CmdButtonCommandName_Executed"/>
</Grid.CommandBindings>
...
</Grid>
3) Назначьте статический ресурс в качестве нужной команды кнопки:
<Button Content="Excel" Command="{StaticResource cmdButtonCommandName}"/>
4) В коде добавьте методы CmdButtonCommandName_CanExecute и CmdButtonCommandName_Executed
private void CmdButtonCommandName_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void CmdButtonCommandName_Executed(object sender, ExecutedRoutedEventArgs e)
{
...
}
Там вы можете установить e.CanExecute, который определяет, включена или выключена кнопка ...
Итак, чтобы ответить на ваш вопрос ... Если вы хотите разблокировать (включить)buttonA после нажатия кнопки B вы устанавливаете логический флаг isButtonBpressed равным true в конце метода buttonB_Executed, а затем в методе buttonA_CanExecute задаете e.CanExcute = isButtonBpressed;
В начале это может показаться сложным, но если вы поняли, это довольно просто.