WPF UI Control Изменение фона - PullRequest
0 голосов
/ 03 ноября 2018

Код ниже происходит слишком быстро, чтобы увидеть изменения. Есть ли способ замедлить это без изменения стиля xaml? Моя единственная мысль состояла в том, чтобы выполнить задачу, но это кажется немного преувеличенным. Мысли

       switch (e.Key)
        {
            case Key.Escape:
                ButtonStop.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#353535"));
                StopButton();
                ButtonStop.ClearValue(BackgroundProperty);
                break;
        }

Это, кажется, работает ... какие-нибудь предостережения?

    private static async void PressBorder(Border control)
    {
        StopButton();
        var wait = Task.Delay(250);
        control.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#353535"));
        await wait;
        control.ClearValue(BackgroundProperty);
    }

1 Ответ

0 голосов
/ 03 ноября 2018

Базовая модель:

// avoid 'async void' almost everywhere else. Ok for an event handler
private async void HandleOnKeyDown(object sender, KeyEventArgs e)
{
  try  // async void needs to do its own error handling 
  {    
        switch (e.Key)
        {
            case Key.Escape:
                ButtonStop.Background = ...;

                // sandwich StopButton() in case it takes some time too   
                var waitTask = Task.Delay(250);  
                StopButton();
                await waitTask; 
                ButtonStop.ClearValue(BackgroundProperty);
                break;
        }

  }
  catch(Exception e)
  {
     // report it
  }

  // general cleanup & restore

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