gpt4 book ai didi

.net - 在运行时获取XAML类型的URI

转载 作者:行者123 更新时间:2023-12-02 04:17:52 25 4
gpt4 key购买 nike

我正在尝试编写一些像这样的代码:

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在任何地方似乎都不是 public 的。我知道IUriContext可以
在运行时使用,但我试图避免实例化该类型只是为了
它的URI。

我唯一能想到的解决方案是尝试假定URI
使用基于 namespace 的约定。但是我想要一个不那么脆弱的解决方案。

最佳答案

正如您提到的,.g.cs包含它。此外,.g.resources包含所有URI。但是您需要破解.g.resources中的baml才能了解根类型。

V4在这里没有任何变化...除了破解baml具有 public API外。

为什么要尝试从Type转换为PackUri?
如果您有一个PackUri并想要创建正确的类型,则Application.LoadComponent调用应该可以正常工作...您不需要像.g.cs一样传入根实例。

希望能有所帮助。
-抢

关于.net - 在运行时获取XAML类型的URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com