我有一个在多个视图中引用的类,但我希望它们之间只共享一个类的实例。我已经实现了我的课程:
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}
。
答案 0 :(得分:18)
接受的答案是错误的,在XAML中完全可能。
<!-- assuming the 'my' namespace contains your singleton -->
<Application.Resources>
<x:StaticExtension Member="my:Singleton.Instance" x:Key="MySingleton"/>
</Application.Resources>
答案 1 :(得分:5)
不幸的是,XAML无法做到这一点。但是您可以将单例对象添加到代码隐藏的资源中:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
Resources.Add("MySingleton", Singleton.Instance);
}
}