用于全局访问单例的Silverlight应用程序资源

时间:2010-01-30 04:24:30

标签: c# silverlight data-binding xaml singleton

我有一个曾经命中的单例将加载用户配置文件信息,我想让它成为我的SL3应用程序中的应用程序级资源,以便应用程序中的元素可以绑定到它。

我的实例的代码版本很简单

UserProfile x = UserProfile.GetInstance();

我希望能够在app.xaml文件中的xaml中执行此操作,而在WPF中我们有ObjectDataProvider,所以我可以表达类似

的内容
<ObjectDataProvider MethodName="GetInstance" 
ObjectType="{x:Type local:UserProfile}" x:Key="CurrentUserProfile"/>

我很难在SL3中找到合适的实现方法。

2 个答案:

答案 0 :(得分:3)

正如您所指出的,Silverlight没有ObjectDataProvider。如果你需要一个它提供的功能,例如延迟实例化,你需要构建一个自己的类来处理它。如果您实际上不需要这些功能,那么只需在启动时将UserProfile的实例添加到App.Resources: -

 private void Application_Startup(object sender, StartupEventArgs e)
 {
    Resources.Add("CurrentUserProfile", UserProfile.GetInstance());
    RootVisual = new MainPage();
 }

答案 1 :(得分:0)

Silverlight has no ObjectDataProvider

也就是说,您可以使用Silverlight对象的DataContext .....

Application.DataContext = UserProfile.GetInstance();