У меня есть вопрос о том, как работает этот UWP API: BrightnessOverride.IsSupportedChanged.В настоящее время вот мои настройки:
- У меня есть ноутбук HP, и я могу использовать BrightnessOverride, чтобы изменить яркость на нем.Если я пытаюсь получить IsSupported, он возвращает true.
- У меня также есть док-станция для этого ноутбука, и у него есть два монитора.На док-станции IsSupported имеет значение false, поскольку Windows не может изменить яркость в этом случае.
Проблема, с которой я столкнулся, заключается в том, что когда я запускаю свое приложение и затем снимаю ноутбук с док-станции, BrightnessOverride.IsSupportedChanged не вызывается.Если я попытаюсь получить IsSupported, это все равно правда.Я должен перезапустить свое приложение, чтобы оно снова вернулось.То же самое происходит, если я переключаюсь из режима стыковки в режим ноутбука, IsSupported останется ложным, и событие никогда не будет вызвано.
Мне кажется, что когда устройство меняется, мне, вероятно, нужно снова вызвать GetForCurrentView (), чтобыполучить новое представление для переопределения, но как мне это сделать, если событие не вызывается?
В этом документе не приводится ни одного примера: https://docs.microsoft.com/en-us/uwp/api/windows.graphics.display.brightnessoverride.issupportedchanged
Чтобы воспроизвести эту проблему, янастроить простое тестовое приложение UWP, и я добавляю его в конструктор MainPage:
b = BrightnessOverride.GetForCurrentView();
b.IsSupportedChanged += B_IsSupportedChanged;
Обратный вызов:
private void B_IsSupportedChanged(BrightnessOverride sender, object args)
{
TextBlock1.Text = "Is changed";
}
И в функции нажатия кнопки я распечатываю значение IsSupported.