Application.LoadComponent找不到资源找不到、资源、Application、LoadComponent

2023-09-05 04:04:21 作者:薄凉菇凉蹦擦擦 ?

我在在我的项目中的XAML文件Ns1与\ NS2 \ myfile.xaml 。它的生成操作设置为页面,用的MSBuild的自定义工具:编译。我试图加载该文件中的静态构造函数:

I have a xaml file in my project at Ns1\Ns2\myfile.xaml. It's build action is set to Page, with a custom tool of MSBuild:Compile. I'm trying to load this file in a static constructor:

namespace Ns1.Ns2 {
    internal class MyClass {
        static() {
            var obj = Application.LoadComponent(new Uri("/myfile.xaml", UriKind.Relative));
        }
    }
}

然而,当我尝试运行此code时,出现异常找不到资源myfile.xaml。如果我的URI改为绝对URI:

However, when I try to run this code, it fails with an exception cannot locate resource 'myfile.xaml'. If I change the URI to an absolute URI:

var obj = Application.LoadComponent(new Uri("pack://application:,,,/ns1/ns2/myfile.xaml", UriKind.Absolute));

失败与不能用绝对URI 。我得到同样的错误,如果我改变myfile.xaml的类型资源。

it fails with Cannot use absolute URI. I get the same errors if I change the type of myfile.xaml to Resource.

我如何编译和code基准myfile.xaml?

How can I compile and reference myfile.xaml from code?

推荐答案

您应该指定程序集名称:

You should specify the assembly name:

Application.LoadComponent(new Uri("/AssemblyName;component/myfile.xaml", UriKind.Relative))

另外,如果文件中有一个code-behind类,你可以只新了,并将生成的code将加载相关的XAML。

Alternatively, if the file has a code-behind class, you can just 'new' it, and the generated code will load the associated XAML.