XAML:访问应用程序的 ResourceDictionary 中的任意对象
作为 XAML/WPF 新手,我尝试将任意(即非 WPF)对象放入我的应用程序资源中
<Application x:Class="MyApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:a="clr-namespace:MyApp"
>
<Application.Resources>
<a:MyClass x:Key="Model"/>
</Application.Resources>
</Application>
,并使用 FindResource 从我的代码隐藏文件中访问它,
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
var obj = (MyClass)this.FindResource("Model");
obj.DoSomething();
}
}
得到了一个 ResourceReferenceKeyNotFoundException 。如果有人能告诉我我做错了什么,我将非常感激!
being a XAML/WPF newbie, I tried to put an arbitrary (i.e. non-WPF) object into my applications resources like
<Application x:Class="MyApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:a="clr-namespace:MyApp"
>
<Application.Resources>
<a:MyClass x:Key="Model"/>
</Application.Resources>
</Application>
and access it from my code-behind file using
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
var obj = (MyClass)this.FindResource("Model");
obj.DoSomething();
}
}
FindResource
got me a ResourceReferenceKeyNotFoundException
. I'd be very grateful if someone could tell me what I'm doing wrong!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,看来资源字典(还没有?)在重写的 OnStartup 方法中初始化,但在 Startup 事件处理程序中可用。
当我使用
Startup
event 而不是重写OnStartup
时:一切
正常!
Ok, it seems that the Resource dictionary is not (yet?) initialized in the overridden
OnStartup
method but available in anStartup
event handler.When I use the
Startup
event instead of overridingOnStartup
like:and
everything worked fine!