XAML: доступ к произвольным объектам в ResourceDictionary приложения - PullRequest
0 голосов
/ 14 марта 2011

будучи новичком в 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>

, и получить к нему доступ из файла с выделенным кодом, используя

public partial class App : Application
{
  protected override void OnStartup(StartupEventArgs e) {
    base.OnStartup(e);
    var obj = (MyClass)this.FindResource("Model");
    obj.DoSomething();
  }
}

FindResource принес мне ResourceReferenceKeyNotFoundException.Буду очень признателен, если кто-нибудь скажет мне, что я делаю не так!

1 Ответ

2 голосов
/ 14 марта 2011

Хорошо, похоже, что словарь ресурсов не инициализирован (пока?) В переопределенном методе OnStartup, а доступен в обработчике Startup.

Когда я использую событие Startup вместо переопределения OnStartup, например:

<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"
     Startup="Application_Startup"
         >

и

private void Application_Startup(object sender, StartupEventArgs e) {

все работало нормально!

...