我想让下面这段代码正常工作:
Type pageType = typeof(Page1);
Uri pageUri = GetPackUriForType(pageType);
问题出在GetPackUriForType方法上 - 我找不到任何.NET框架中可以执行此操作的内容。在编译时生成的.g.cs文件中,URI作为InitializeComponent代码的一部分嵌入其中:
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/PageCollection;component/pages/page1.xaml", System.UriKind.Relative);
#line 1 "..\..\..\Pages\Page1.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
但是那个URI似乎没有公开在任何地方。我知道可以在运行时使用IUriContext,但我试图避免实例化该类型只是为了获取其URI。
我能想到的唯一解决方案是根据命名空间基于约定尝试假设URI。但我希望有一个更不易出错的解决方案。