Как разблокировать функцию кнопки после нажатия кнопки? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытался заполучить WPF.У меня вопрос, есть ли способ разблокировки кнопок (2.) после нажатия кнопки входа (1.).Обычно я хочу, чтобы ошибка появлялась, если кто-то нажимает, например, кнопку Excel , если он не вошел в систему.

Window showing a login form along with a side menu.

1 Ответ

0 голосов
/ 20 февраля 2019

Один из способов поиграться с кнопкой включения и выключения в 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;

В начале это может показаться сложным, но если вы поняли, это довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...