通用 Windows 8.1 商店项目在这里。
我需要以编程方式从给定资源名称的应用程序的合并字典中获取资源。
我想出了一个实用方法,它可以让我得到我想要的,但对我来说看起来很丑:
public static async Task<T> GetAppResource<T>(string key) where T:class
{
T resource = default(T);
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
()=>{
foreach (var d in Application.Current.Resources.MergedDictionaries) {
foreach (var pair in d) {
if (pair.Key.ToString() == key && pair.Value is T) {
resource = pair.Value as T;
goto End;
}
}
}
End:;
}
);
return resource;
}
有没有更好的方法来做到这一点?
字典声明如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..." />
<ResourceDictionary Source="..." />
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
实际上,我正在以编程方式打开合并字典中声明的弹出窗口。