Добавление статического объекта в словарь ресурсов

У меня есть класс, на который ссылаются в нескольких представлениях, но я хотел бы, чтобы там был только один экземпляр класса, который был среди них. Я выполнил свой класс следующим образом:

using System;

public class Singleton
{
   private static Singleton instance;

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null)
         {
            instance = new Singleton();
         }
         return instance;
      }
   }
}

Есть ли способ добавить Singleton.Instance в словарь ресурсов в качестве ресурса? Я хотел бы написать что-то вроде

<Window.Resources>
    <my:Singleton.Instance x:Key="MySingleton"/>
</Window.Resources>

вместо того, чтобы писать {x:static my:Singleton.Instance} каждый раз, когда мне нужно ссылаться на него.

Ответы

Ответ 1

Принятый ответ неверен, его вполне возможно в XAML.

<!-- assuming the 'my' namespace contains your singleton -->
<Application.Resources>
   <x:StaticExtension Member="my:Singleton.Instance" x:Key="MySingleton"/>
</Application.Resources>

Ответ 2

К сожалению, это невозможно из XAML. Но вы можете добавить объект singleton к ресурсам из кода:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e) {
        base.OnStartup(e);

        Resources.Add("MySingleton", Singleton.Instance);
    }
}