【问题标题】:BrightnessOverride.IsSupportedChanged is not triggered when I switch the monitors切换显示器时未触发 BrightnessOverride.IsSupportedChanged
【发布时间】:2019-09-26 20:40:58
【问题描述】:

我有一个关于此 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";
}

在按钮单击功能中,我打印出 IsSupported 值。

【问题讨论】:

    标签: c# uwp screen-brightness


    【解决方案1】:

    感觉当设备发生变化时,我可能需要再次调用 GetForCurrentView() 来获取要覆盖的新视图,但如果没有调用事件,我该怎么做呢?

    为了您的快乐,您可以使用ProjectionDisplayAvailableChanged 事件来检测监视器已更改。当投影仪或其他辅助显示器可用或不可用时,就会发生这种情况。

    ProjectionManager.ProjectionDisplayAvailableChanged += ProjectionManager_ProjectionDisplayAvailableChanged;
    
    private void ProjectionManager_ProjectionDisplayAvailableChanged(object sender, object e)
    {
       //call GetForCurrentView method again
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 2019-03-09
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多