【发布时间】:2016-03-30 19:35:30
【问题描述】:
我正在使用ResourceManager.Current.DefaultContext.QualifierValues.MapChanged 事件来检测我的应用程序运行时的语言变化。这工作正常,但我收到警告:
“ResourceManager.DefaultContext.get”已过时:“Windows 8.1 之后的版本可能会更改或无法使用 DefaultContext。相反,请使用 ResourceContext.GetForCurrentView。
我改为将我的应用程序切换到 ResourceContext.GetForCurrentView().QualifierValues.MapChanged,但该应用程序现在在启动时崩溃了。我没有遇到任何异常中断,我得到了一个单独的 Visual Studio 窗口,它会弹出以进行调试,唯一的选择是 Visual Studio 的新实例。
出了什么问题,我该如何解决?
失败的代码示例:
// App.xaml.cs
protected async override Task OnInitializeAsync( IActivatedEventArgs args )
{
// Doesn't work. Yes this is in an async method...
ResourceContext.GetForCurrentView().QualifierValues.MapChanged += QualifierValuesMapChanged;
// But this is the next line and works fine.
Dispatcher.Initialize();
// This works just fine.
ResourceContext.GetForViewIndependentUse().QualifierValues.MapChanged += QualifierValuesMapChanged;
// So does this.
ResourceManager.Current.DefaultContext.QualifierValues.MapChanged += QualifierValuesMapChanged;
}
【问题讨论】:
标签: c# windows-runtime