当我致电CompositionCapabilities.GetForCurrentView
时,我收到以下异常。
System.UnauthorizedAccessException:'访问被拒绝。 (例外 HRESULT:0x80070005(E_ACCESSDENIED))'
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
// Exception happens here.
var capabilities = CompositionCapabilities.GetForCurrentView();
}
奇怪的是代码编译好了所以我假设API可用。我是否需要在Package.appxmanifest中声明任何功能?
答案 0 :(得分:2)
你不需要申报任何东西。这个方法太简单了。
因此,不是在构造函数中调用它,而是在创建Window之后立即调用它 -
protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 4))
{
var capabilities = CompositionCapabilities.GetForCurrentView();
var areEffectsSupported = capabilities.AreEffectsSupported();
var areEffectsFast = capabilities.AreEffectsFast();
}
base.OnWindowCreated(args);
}
请注意,您需要添加一项检查,以查看是否也支持该API,例如上面的代码。