我有一个名为NotificationScheduler的单例类。我真的只能在我的应用程序中使用其中一个。 Singleton模式是通过“Instance”属性实现的,只能通过此属性访问实例,如下所示:
private static NotificationScheduler _instance = null;
public static NotificationScheduler Instance
{
get { return _instance ?? (_instance = new NotificationScheduler()); }
}
public NotificationScheduler()
{
#if DEBUG
if (_instance != null)
Debug.WriteLine(
"WARN: A second Instance of NotificationScheduler has been created");
#endif
_instance = this;
init();
}
但我也有理由这样在XAML中创建:
<NotifyIcon:NotificationScheduler x:Key="NotificationScheudlerInstance"
IconSource="/Images\Icons/myicon.ico"
我知道这不使用Instance属性!这甚至可能吗?如果我在这样的代码中访问实例,当然会创建一个实例两次:
NotificationScheduler.Instance.DoSomething();
NotificationScheduler n = (NotificationScheduler) FindResource("NotifyIcon");
n.DoSomething();
目前,我的解决方案是通过XAML代码创建FindResource事件,然后一切正常。
问题:我可以通过访问静态属性在XAML中创建资源吗?
答案 0 :(得分:3)
为什么不在第一个代码段中使用单例属性,并在XAML中使用{x:Static NotifyIcon:NotificationScheduler.Instance}
引用它?如果它是一个单例,它不应该是一个范围的资源。
答案 1 :(得分:1)
为什么不创建一个可以有多个实例的控件,而不是尝试在XAML中创建单例,而是所有实例都引用静态或单例对象?我认为这可能会更容易管理。
答案 2 :(得分:0)
您可以绑定到.Net 4.5中的静态属性;更多here