在 WPF 中启用和禁用按钮的一种方法是使用 RoutedCommands 而不是 click_events。有 4 个步骤:
1) 为您正在使用的每个按钮分配一个静态资源,作为父 UI 元素上的资源。例如,假设您有一个 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 来定义按钮是启用还是禁用...
所以,回答你的问题...如果你想在 buttonB 被按下后解锁(启用)buttonA,你在 buttonB_Executed 方法的末尾设置一个布尔标志 isButtonBpressed 等于 true,然后在 buttonA_CanExecute 方法中你设置 e.CanExcute = isButtonBpressed;
一开始可能看起来很复杂,但如果你掌握了窍门,那就很简单了。