Ответ 1
Принятый ответ неверен, его вполне возможно в XAML.
<!-- assuming the 'my' namespace contains your singleton -->
<Application.Resources>
<x:StaticExtension Member="my:Singleton.Instance" x:Key="MySingleton"/>
</Application.Resources>
У меня есть класс, на который ссылаются в нескольких представлениях, но я хотел бы, чтобы там был только один экземпляр класса, который был среди них. Я выполнил свой класс следующим образом:
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}
каждый раз, когда мне нужно ссылаться на него.
Принятый ответ неверен, его вполне возможно в XAML.
<!-- assuming the 'my' namespace contains your singleton -->
<Application.Resources>
<x:StaticExtension Member="my:Singleton.Instance" x:Key="MySingleton"/>
</Application.Resources>
К сожалению, это невозможно из XAML. Но вы можете добавить объект singleton к ресурсам из кода:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
Resources.Add("MySingleton", Singleton.Instance);
}
}