【发布时间】:2019-09-26 20:40:58
【问题描述】:
我有一个关于此 UWP API:BrightnessOverride.IsSupportedChanged 的工作原理的问题。目前这是我的设置:
- 我有一台惠普笔记本电脑,我可以使用 BrightnessOverride 来更改它的亮度。如果我尝试获取 IsSupported,它会返回 true。
- 我还有一个用于这台笔记本电脑的扩展坞,它有两个显示器。在扩展坞上时,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