按下按钮后如何解锁按钮功能?

时间:2019-02-20 10:18:57

标签: c# wpf button login

我试图接触WPF。我的问题是,是否有一种方法可以在按下按钮登录(1.)后解锁按钮(2.)。基本上我想如果有人按下例如弹出一个错误。 Excel -按钮,只要他没有登录即可。

Window showing a login form along with a side menu.

1 个答案:

答案 0 :(得分:0)

在WPF中启用和禁用按钮的一种方法是使用RoutedCommands而不是click_events。有四个步骤:

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,它定义按钮是启用还是禁用...

因此,要回答您的问题...如果要在按下按钮B后解锁(启用)按钮A,请在方法buttonB_Executed的末尾设置一个布尔标志isButtonBpressed等于true,然后在buttonA_CanExecute方法中设置设置e.CanExcute = isButtonBpressed;

一开始它似乎很复杂,但是如果掌握了它,那就很简单了。