簡體   English   中英

切換顯示器時未觸發 BrightnessOverride.IsSupportedChanged

[英]BrightnessOverride.IsSupportedChanged is not triggered when I switch the monitors

我有一個關於 UWP API: BrightnessOverride.IsSupportedChanged 工作原理的問題。 目前這是我的設置:

  1. 我有一台惠普筆記本電腦,我可以使用 BrightnessOverride 來改變它的亮度。 如果我嘗試獲取 IsSupported,它會返回 true。
  2. 我也有這台筆記本電腦的擴展塢,它有兩個顯示器。 在擴展塢上時,IsSupported 為 false,因為 Windows 在這種情況下無法更改亮度。

我遇到的問題是,當我啟動我的應用程序,然后從擴展塢中取出筆記本電腦時,BrightnessOverride.IsSupportedChanged 沒有被調用。 如果我嘗試獲得 IsSupported,它仍然是正確的。 我必須重新啟動我的應用程序以使其再次返回 true。 如果我從對接模式切換到筆記本電腦模式,也會發生同樣的事情,IsSupported 將保持為 false,並且永遠不會調用該事件。

我覺得當設備發生變化時,我可能需要再次調用 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";
}

在按鈕中單擊 function 我打印出 IsSupported 值。

感覺當設備發生變化時,我可能需要再次調用 GetForCurrentView() 以獲取要覆蓋的新視圖,但是如果未調用事件,我該怎么做呢?

為了您的快樂,您可以使用ProjectionDisplayAvailableChanged事件來檢測監視器已更改。 當投影儀或其他輔助顯示器可用或不可用時,就會發生這種情況。

ProjectionManager.ProjectionDisplayAvailableChanged += ProjectionManager_ProjectionDisplayAvailableChanged;

private void ProjectionManager_ProjectionDisplayAvailableChanged(object sender, object e)
{
   //call GetForCurrentView method again
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM